台灣最大程式設計社群網站
線上人數
1037
 
會員總數:246133
討論主題:189712
歡迎您免費加入會員
討論區列表 >> ASP.NET >> GridView的DropDownList資料繫結,在編輯模式selectedvalue細節不到的問
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
GridView的DropDownList資料繫結,在編輯模式selectedvalue細節不到的問
價值 : 50 QP  點閱數:687 回應數:8
樓主

冷逸雲
初學者
90 61
640 116
發送站內信

大家好
小弟現今有一個aspx
放了一個gridview
gridview裡有一個dropdownlist
dropdownlist有繫結某一個資料表
如下


現在的問題就是SelectedValue在SqlDataSource Select不到時,如何在後端動態新增一個listitem並設為選取
目前小弟試過以下方式,但似乎沒用

cs


目前在前端該row按下編輯鈕是沒反應的
只有在當SelectedValue有Select到時是正常的
小弟希望是agent資料表沒有符合SelectValue時可以動態新增一個Listitem
Text為[代理人已刪除]
Value為原本的值
並設為選取

搜尋相關Tags的文章: [ Dropdownlist SelectedValue資料繫結不到資料時如何新增一個Listitem? ] ,
本篇文章發表於2019-06-15 20:39
1樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應

現在的問題就是SelectedValue在SqlDataSource Select不到時,如何在後端動態新增一個listitem並設為選取

小喵會這樣做
1.在EditItemTemplate中,小喵會放一個HiddenField的控制項,然後綁上c_agent當他的Value
2.當切到Edit的模式時
2a.取得該Row
2b.透過該Row,取得HiddenField的Value與DropDownList的SelectedValue
3.比對2b的兩個值,看是否相同,如果不同就是需要處理的狀態
4.需要處理,新增一個ListItem,他的值用HiddenField的值放入,然後將該ListItem加入DropDownList,並且設定該ListItem的Selected=True

大概是以上這樣的方向,樓主您思考看看
有問題歡迎再提出
^_^
本篇文章回覆於2019-06-16 09:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

冷逸雲
檢舉此回應
謝謝版主喵的回應

小弟針對回應的理解是這樣







不知小弟有沒有理解錯?
如果沒錯..
那麼有沒有加上上面那段都出現一樣的錯誤
'agent' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value

感覺像...還沒跑到那段判斷網頁就沒有繼續下去了
本篇文章回覆於2019-06-17 19:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
試試看這樣
迴圈先對DropDownList的每個項目selected=false

然後再把項目加上去

本篇文章回覆於2019-06-17 22:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

冷逸雲
檢舉此回應
謝謝喵大的回應

經小弟套用您的範例測試後還是出現一樣的錯誤
'agent' 擁有的 SelectedValue 無效,因為它不在項目清單中。
參數名稱: value


但當小弟索性把判斷式if拿掉
只留下

那些有select到的SelectedValue都會正常被取代Text也正常變為代理人已刪除
而沒有select到的依然是出現一樣的錯誤
'agent' 擁有的 SelectedValue 無效,因為它不在項目清單中。
參數名稱: value


於是小弟在想那些沒有select到的SelectedValue根本已被判定不存在(但又不是null)
所以自然不會去執行下面這一段

也就是說當我按下編輯鈕後程式尚未執行就已經錯誤了
於是又想到生命週期
是不是什麼發生在RowDataBound之前
但這部分小弟就又更不懂了....
希望喵大能協助小弟去想想...提點提點
本篇文章回覆於2019-06-18 02:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

冷逸雲
檢舉此回應
小弟左思右想決定逆向思考
索性把DropDownList的SelectedValue='<%# Bind("c_agent") %>'拿掉
後端改成下面這樣

不知道這樣的方向對不對
不過倒是沒出現什麼錯誤訊息
只是...下面這段執行似乎正常(感覺)

而下面這段...雖然可以順利進入編輯模式...但DropDownList中並沒有新增的additem



求解~~~
本篇文章回覆於2019-06-18 08:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
針對
'agent' 擁有的 SelectedValue 無效,因為它不在項目清單中。


不知道是否可以
麻煩您測試看看
在DropDownList中,設定屬性『AppendDataBoundItems』為『True』

^.^a
本篇文章回覆於2019-06-18 09:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

冷逸雲
檢舉此回應
一直都是有『AppendDataBoundItems』為『True』
本篇文章回覆於2019-06-18 09:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

冷逸雲
檢舉此回應
回覆喵版大
網路爬文爬了很久找不到
為什麼下段無法成功

所以小弟覺得問題依舊是出在'agent' 擁有的 SelectedValue 無效,因為它不在項目清單中。
也就是說有可能SelectedValue不在項目中就直接報錯了...導致程式沒再往下跑
於是自己用最傳統的方式把問題解決了...如下...給你作參考

先把前端DropDownList的綁定SelectedValue屬性拿掉
後端改成如下...再利用GridView1_RowUpdating把DropDownList選定的值寫入e.NewValues["c_agent"]裡再Update資料列

本篇文章回覆於2019-06-26 22:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.