日期:2014-05-18  浏览次数:20476 次

DropDownList绑定数据源时报错
DropDownList绑定数据源报错:

"有一个无效   SelectedValue,因为它不在项目列表中 "

绑定代码如下:

<asp:DropDownList   ID= "DropDownList3 "   runat= "server "   Width= "99% "   DataSource   =   <%#   GetSourceCodeList()   %>     DataTextField   =   "SourceCode "   Text   =   ' <%   #Bind   ( "Code ")   %> '   >

如何做到在绑定数据源时,发现当前的text的值不在项目列表中时就把当前值加入到列表?

谢谢!


------解决方案--------------------
默认无法实现!

当你设置 DropDownList.Text/SelectedValue 的时候,假如列表项不包含此值,那么将引发System.ArgumentOutOfRangeException 异常

目前处理,此问题,至少又两种方法

1. 治本方法:扩展 DropDownList 重写 Text/SelectedValue 以支持你自定义需求

2. 不直接绑定 Text/SelectedValue ,而是在 模板控件的 DataBound 事件中处理

// 假设 GridView
...RowDataRound(...
{
DataView dv = e.Row.DataItem as DataView; // 假设你对 GridView 绑定了 DataTable/DataSet/DataView
if(dv == null) return;
DropDownList drp = e.Row.FindControl( " ") as DropDownList;
try {
drp.SelectedValue = dv[ "Code "].ToString();
}catch(ArgumentOutOfRangeException) {
drp.Items.Add(new ListItem(dv[ "Code "].ToString());
}
}
------解决方案--------------------
cs文件中动态添加吧
------解决方案--------------------
你都说了要求,那就按照你的要求把代码写出来就行了阿
FindbyValue,这个方法把