日期:2014-05-19  浏览次数:21052 次

DropDownList选定项的读取问题
this.dropdownlist.SelectedValue
我用这个选定了其中的一项(不是第一项),读取出来的时候却总是第一项,这是为什么?

也试过this.dropdownlist.SelectedItem.Text读取内容也是第一项

------解决方案--------------------
你的dropdownlist的数据源是自己加的,还是从数据库中取得啊,你是一是selectIndex看看是不是选的第一项,有可能是数据源的问题
------解决方案--------------------
代码写在什么事件中?
------解决方案--------------------
原因很简单,不关ASP.NET的事情而是Html的问题(可以认为是Html的Bug吧)


因为DropDownList最终生成的客户端是 <select> <option> 标签,而这组标签有一个问题,就是在多个option具有相同value而不同text时,不管你选择的是哪个,总认为是第一个(具有该值的选项)。


不管你获取的是索引还是值或其他东西,这个问题在JSP,ASP,PHP中同样存在,解决的方法是给不同的选项以不同的value
------解决方案--------------------
也可能是你在PageLoad中重新绑定而没有用 if(!IsPostBack)判定造成每次回发都被重新绑定,因此丢失了选择的值。
------解决方案--------------------
在下标改变事件中加上这个
ViewState[ "id "]=this.DropDownList1.SelectedValue.ToString();
将选定的值存在ViewState中
在删除按纽中使用ViewState[ "id "]的值,不要用this.DropDownList1.SelectedValue.ToString()了
------解决方案--------------------
this.DropDownList1.DataSource= "数据源 "(我喜欢用DataTable);
this.DropDownList1.DataTextField= "数据源中的列名 "; //显示的文字
this.DropDownList1.DataValueField= "数据源中的列名 ";//不同的值