当前位置:酷酷问答>百科知识>有一个无效 SelectedValue

有一个无效 SelectedValue

2024-09-25 20:02:31 编辑:zane 浏览量:586

有一个无效 SelectedValue

的有关信息介绍如下:

有一个无效 SelectedValue

在asp.net的listview中,我们有时会用到dropdownlist控件,来获取后台某代码列,供用户选择,同时需要将表单数据与dropdownlist控件进行绑定。但是如果获取的表单数据,并没有列表中的项,或者该数据本就为空。这时页面会报错,有一个无效 SelectedValue....很是恼人。原因是微软尚未处理的一个BUG,dropdownlist的元素中并不存在一个SelectedValue属性所指定的值,就是SelectedValue的值,在列表中查找不到,于是报错。

创建一个textbox控件,指定ID为xxx_save,xxx为dropdownlist的ID,这不是规则,是写代码的习惯而已。将该textbox的Visible属性设为false,它只作为存值控件。

给dropdownlist添加SkinID并指向textbox,同时给textbox添加SkinID指向dropdownlist。

给dropdownlist添加OnSelectedIndexChanged方法

给textbox添加OnDataBinding方法

如下

SkinID="drop_list_save" OnSelectedIndexChanged="drop_list_onchange"

DataSourceID="bind_data"

DataTextField="text"

DataValueField="value">

ConnectionString="<%$ ConnectionStrings:dbname %>"

SelectCommand="SELECT * FROM [table]">

在后台代码中添加两个方法

protected void drop_list_onchange(object sender, EventArgs e) {

DropDownList ddl = (DropDownList)sender;

TextBox tb = (TextBox)ddl.Parent.FindControl(ddl.SkinID);

tb.Text = ddl.SelectedValue;

}

protected void drop_list_onbinding(object sender, EventArgs e) {

TextBox tb = (TextBox)sender;

DropDownList ddl = (DropDownList)tb.Parent.FindControl(tb.SkinID);

try{

ddl.SelectedValue = tb.Text;

}catch(Exception){

}

}

如上方法的意思是将前台出现的BUG,在后台获取,并不予处理,这样就避免页面报错了。同时也实现了dropdownlist的数据与表单数据绑定。如果出现空值问题,页面会将dropdownlist的值置为列表第一项。问题解决!

版权声明:文章由 酷酷问答 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.kukuwd.com/article/51635.html
热门文章