2008-10-23 36 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

这也可能是由于在绑定到下拉列表中的源数据中有空值引起的。

相关问题