2008-10-23 44 views
1

的例外是: 「國家」具有的SelectedValue,因爲它不在項目列表中存在哪些無效。 參數名:價值的SelectedValue是無效的 - 在列表不存在 - C#/ ASP.NET

UserService.DsUserAttributes dsCountry = us_service.GetUserAttributeDropDown(systemId, "Country"); 
Country.DataSource = dsCountry.tblDropDownValues; 
Country.DataTextField = "AttrValue"; 
Country.DataValueField = "Id"; 
Country.DataBind(); 

dsCountry.tblDropDownValues內保存的值被:

Id          AttrValue  AttrName 
aefa28e0-a118-11dd-ad8b-080c210c9a66 PLEASE SELECT Country 
213a743e-ea0b-419c-bd44-03b1c35241b3 USA   Country 
eefa1387-8dc0-11d8-975f-13da67a41a5d CANADA   Country 

回答

2

每次我得到這個錯誤是因爲我是匹配上的按鍵綁定我的數據不匹配。

的線條表現出你可能不成爲問題。研究何時可能從另一個表中加載記錄並將它們的值綁定到下拉列表中。

例如,如果你有一個包含與國家ID的所有您的國家名稱作爲價值屁股這些值都存儲在一個表CountryTbl網頁上的下拉列表。您還可以在頁面上有一個網格,用戶可以從其他表格中選擇要編輯的記錄。假設這條記錄包含名稱,電話號碼和國家等信息,並將其全部存儲在另一個表UserTbl中。當表單嘗試綁定來自UserTbl的數據時,它試圖將您的國家DropDownList設置爲等於來自UserTbl的綁定值。

但是會發生什麼事情,而且在我身上發生過很多次,是因爲您的UserTbl中存在不良數據,例如不再存在的國家/地區,或者其國家/地區字段中的其他值不匹配您在國家/地區下拉列表中的值。

看看你的數據庫表,看看你有你的「UserTbl」任何CountryIds不符合你的「CountryTbl」任何ContryIds的。

2

嘗試在回傳結合數據。這聽起來像事件處理程序訪問DropDownList時,它沒有用您最初綁定到DropDownList的值重新填充。

此外,請記住該事件處理程序啓動其處理之前足夠早綁定,這樣就必然。 OnInit或OnLoad應該足夠好。

否則,可能需要一些更多的細節:

  1. 當異常發生的?在渲染過程中,還是在事件處理程序的回發期間?
  2. 對於可能指向訪問所選值的代碼中的點的錯誤,您是否有堆棧跟蹤?
  3. 您何時綁定數據?
0

這也可能是由於在綁定到下拉列表中的源數據中有空值引起的。

相關問題