SelectedValue无效 - 列表中不存在 - C#/ ASP.NET

时间:2008-10-23 15:41:31

标签: c# asp.net

例外情况是: “Country”具有SelectedValue,该值无效,因为它不存在于项列表中。 参数名称:值

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

4 个答案:

答案 0 :(得分:2)

尝试在回发时绑定数据。听起来就像事件处理程序访问DropDownList时,它还没有重新填充您最初绑定到DropDownList的值。

另外,请记住尽早绑定,以便在事件处理程序开始处理之前绑定它。 OnInit或OnLoad应该足够好了。

否则,可能需要更多细节:

  1. 什么时候发生异常?在渲染期间,还是在事件处理程序中的回发?
  2. 您是否有错误的堆栈跟踪可能指向代码中访问所选值的位置?
  3. 您何时绑定数据?

答案 1 :(得分:2)

每次出现此错误都是因为我匹配的键绑定我的数据不匹配。

您展示的线条可能不是问题。查看何时可能从另一个表加载记录并将其值绑定到下拉列表中。

例如,如果您的页面上有一个下拉列表,其中包含所有国家/地区名称的国家/地区ID作为后置值这些值都存储在表CountryTbl中。您还在页面上有一个网格,用户可以从中选择要编辑的另一个表中的哪个记录。假设此记录包含名称,电话号码和国家/地区等信息,并且它们全部存储在另一个表UserTbl中。当表单尝试从UserTbl绑定其数据时,它正在尝试将Country DropDownList设置为等于UserTbl的绑定值。

但是可能发生的事情,并且多次发生在我身上,就是你的UserTbl中的数据不好,就像一个不再存在的国家,或者其国家/地区字段中的其他任何值都不匹配您在国家/地区下拉列表中的值。

查看您的数据库表,看看您的“UserTbl”中是否有任何CountryIds与“CountryTbl”中的任何ContryId都不匹配。

答案 2 :(得分:1)

答案 3 :(得分:0)

这也可能是因为您绑定到下拉列表的源数据中存在空值。