读书人

DropDownList绑定数据源时报错,该如何

发布时间: 2012-01-06 22:55:18 作者: rapoo

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

读书人网 >asp.net

热点推荐