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

时间:2009-10-21 20:45:05

标签: c# asp.net drop-down-menu

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

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

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

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

3 个答案:

答案 0 :(得分: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;

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

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

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

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

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

答案 1 :(得分:16)

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

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

答案 2 :(得分:0)

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

首先出现错误信息:

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

我的情景:

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

分辨率:

然后我得到了补偿并退出VS 2010并休息了一下。当我回来。我重新申请了,没有问题。就在那时我意识到自己代价高昂的错误:我设置了一个设置表达式的表达式 调试器监视窗口中的SelectedValue!因此多样性!

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

相关问题