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

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

dropDownList.Items.FindByValue(myValue).Selected = true; // assume myValue is found at index 1 of dropDownList.Items 

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

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

我注意到索引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; 

但这没有帮助。 发生了同样的exception

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

 dropDownList.SelectedIndex = dropDownList.Items.IndexOf(dropDownList.Items.FindByValue(myValue)); 

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

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

我刚遇到这个问题,发现它是由不同的东西引起的。 我在多个下拉列表中添加了相同的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); 

然后设置SelectedValue:

 ddl1.SelectedValue = "1"; //sets the Selected property of item ddl2.SelectedValue = "2"; //sets the Selected property of item2 

切换到添加ListItem单独实例可以解决问题。

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

我遇到了类似的问题,但情况略有不同。 我认为我应该发布它和解决方案,因为它可能有助于有人节省时间,如果他们碰巧在我类似的场景中。

首先是错误信息:

 AMError: Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: Cannot have multiple items selected in a DropDownList. 

我的场景:

当我遇到问题时,我正在使用VisualStudio 2010逐步完成应用程序(ASP VB Net)。 我查看了页面上的2个dropdownlists ,检查了互联网并浪费了几个小时没有任何分辨率。

解析度:

然后我得到了补偿并退出VS 2010并rest了一下。 当我回来。 我重申了应用程序,没有问题。 那是我意识到我的代价高昂的错误:我设置了一个表达式,在Debugger Watch Window中设置了SelectedValue ! 因此多样性!

我删除了表达式,一切都很好— Visual Studion 2010能够通过dropdownlist部分进入应用程序的另一个焦点区域。