asp.net中不能在DropDownList中选择多个项 原因分析及解决方法
程序员文章站
2024-03-06 18:05:38
示例代码: 复制代码 代码如下: bulkstockbll bll = new bulkstockbll(); dataset ds = bll.getbulkstock(...
示例代码:
bulkstockbll bll = new bulkstockbll();
dataset ds = bll.getbulkstock();
this.ddl_bulkstock.datatextfield = "name" ;
this.ddl_bulkstock.datavaluefield = "id" ;
this.ddl_bulkstock.datasource = ds;
this.ddl_bulkstock.databind();
this.ddl_bulkstock.items.add(new listitem( "全部", "0" ));//第一次选择!
this.ddl_bulkstock.items.findbyvalue("0" ).selected = true;
*******************************
this.ddl_bulkstock.items.findbyvalue(infobulkstockid).selected = true;//第二次选择!
******************************
出现了两次选择,所以报错。
page load的时候,index0的selected = true,你再选一个index1的selected 也true了,就报错。
不要用dropdownlist.items[x].selected = true/false,推荐用dropdownlist.selectedindex = x。
解决方法有两个:
(1)在选择某个选项时,不用上面的绿色代码显示方式,使用下面的代码
this .ddl_bulkstock.selectedindex = ddl_bulkstock.items.indexof(ddl_bulkstock.items.findbyvalue(infobulkstockid));
(2)在每次选择某个选项前,使用clearselection操作。
this.ddl_bulkstock.clearselection();
今天在编辑页面出现:不能在 dropdownlist 中选择多个项。
仔细的找了原因发现:
<asp:dropdownlist id="com_ygrenshu" runat="server" style="margin-left:8px;">
<asp:listitem value="0">请选择人数</asp:listitem>
<asp:listitem selected="true" value="5">5人以下</asp:listitem>
<asp:listitem value="10">5-10 人</asp:listitem>
<asp:listitem value="50">11-50 人</asp:listitem>
</asp:dropdownlist>
我在编辑页面进行重新绑定数据的代码:
for (int i = 0; i < this.com_ygrenshu.items.count; i++)
{
com_ygrenshu.items[i].selected = false;
//如果没有上面这一句那么将出错误:不能在 dropdownlist 中选择多个项
if (com_ygrenshu.items[i].value.trim() == ds.tables[0].rows[0]["empl_num"].tostring().trim())
{
com_ygrenshu.items[i].selected = true;
}
}
原因是:你的dropdownlist有两个selected="true" 选项,所以出错!
#dropdownlist控件
复制代码 代码如下:
bulkstockbll bll = new bulkstockbll();
dataset ds = bll.getbulkstock();
this.ddl_bulkstock.datatextfield = "name" ;
this.ddl_bulkstock.datavaluefield = "id" ;
this.ddl_bulkstock.datasource = ds;
this.ddl_bulkstock.databind();
this.ddl_bulkstock.items.add(new listitem( "全部", "0" ));//第一次选择!
this.ddl_bulkstock.items.findbyvalue("0" ).selected = true;
*******************************
this.ddl_bulkstock.items.findbyvalue(infobulkstockid).selected = true;//第二次选择!
******************************
出现了两次选择,所以报错。
page load的时候,index0的selected = true,你再选一个index1的selected 也true了,就报错。
不要用dropdownlist.items[x].selected = true/false,推荐用dropdownlist.selectedindex = x。
解决方法有两个:
(1)在选择某个选项时,不用上面的绿色代码显示方式,使用下面的代码
this .ddl_bulkstock.selectedindex = ddl_bulkstock.items.indexof(ddl_bulkstock.items.findbyvalue(infobulkstockid));
(2)在每次选择某个选项前,使用clearselection操作。
this.ddl_bulkstock.clearselection();
今天在编辑页面出现:不能在 dropdownlist 中选择多个项。
仔细的找了原因发现:
复制代码 代码如下:
<asp:dropdownlist id="com_ygrenshu" runat="server" style="margin-left:8px;">
<asp:listitem value="0">请选择人数</asp:listitem>
<asp:listitem selected="true" value="5">5人以下</asp:listitem>
<asp:listitem value="10">5-10 人</asp:listitem>
<asp:listitem value="50">11-50 人</asp:listitem>
</asp:dropdownlist>
我在编辑页面进行重新绑定数据的代码:
复制代码 代码如下:
for (int i = 0; i < this.com_ygrenshu.items.count; i++)
{
com_ygrenshu.items[i].selected = false;
//如果没有上面这一句那么将出错误:不能在 dropdownlist 中选择多个项
if (com_ygrenshu.items[i].value.trim() == ds.tables[0].rows[0]["empl_num"].tostring().trim())
{
com_ygrenshu.items[i].selected = true;
}
}
原因是:你的dropdownlist有两个selected="true" 选项,所以出错!
#dropdownlist控件