System.Web.HttpException:不能在DropDownList中选择多个项目

Bil*_*zke 9 c# asp.net drop-down-menu

在页面加载期间,已选择索引0.然后这段代码语句选择索引1:

dropDownList.Items.FindByValue(myValue).Selected = true; 
// assume myValue is found at index 1 of dropDownList.Items
Run Code Online (Sandbox Code Playgroud)

页面加载完成后,页面显示:"System.Web.HttpException:DropDownList中不能选择多个项目."

为什么我得到例外?我该如何解决?

Bil*_*zke 38

我注意到索引0和索引1都将属性"Selected"设置为true(dropDownList.Items [0] .Selected和dropDownList.Items [1] .Selected都为true).但是,即使最近设置了索引1,dropDownList.SelectedIndex仍为0.

我尝试通过事先清除列表选择来解决这个问题.

dropDownList.ClearSelection();
dropDownList.Items.FindByValue(myValue).Selected = true;
Run Code Online (Sandbox Code Playgroud)

但这没有帮助.发生了同样的异常

有什么帮助,是以另一种方式设置所选值:

dropDownList.SelectedIndex = dropDownList.Items.IndexOf(dropDownList.Items.FindByValue(myValue));
Run Code Online (Sandbox Code Playgroud)

现在选择更改在整个列表中传播.

因此,不要使用dropDownList.Items [x] .Selected = true/false来更改DropDownList的选定值.相反,使用dropDownList.SelectedIndex = x;

  • 或者你可以使用`ddl.Selected = val`,这是我更喜欢的一种更容易的变化.此外,在选择所需值之前,请确保数据已绑定到"DropDownList".这也可能通过尝试从尚未填充的ddl中选择值来导致此错误.我用一个简单的`If ddl.Items.Count <1 Then` - >`ddl.DataBind()`完成了这个.我确信这不是理想的,但它至少是一个方便的快速修复.:) (2认同)

Tom*_*ing 17

我刚遇到这个问题,发现它是由不同的东西引起的.我在ListItem多个下拉列表中添加了相同的实例:

ListItem item = new ListItem("Foo", "1");
ListItem item2 = new ListItem("Bar", "2");
ddl1.Items.Add(item);
ddl2.Items.Add(item);
ddl1.Items.Add(item2);
ddl2.Items.Add(item2);
Run Code Online (Sandbox Code Playgroud)

然后设置SelectedValue:

ddl1.SelectedValue = "1"; //sets the Selected property of item
ddl2.SelectedValue = "2"; //sets the Selected property of item2
Run Code Online (Sandbox Code Playgroud)

切换到添加ListItem修复问题的单独实例.

我的猜测是,当你设置SelectedValueDropDownList,它设置Selected相应的属性ListItem及其Items集合.因此,在这种情况下,在第二个代码块的末尾,在两个下拉列表中都选择了两个项目.