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,这个方法把