【问题标题】:System.Web.HttpException: Cannot have multiple items selected in a DropDownListSystem.Web.HttpException:不能在 DropDownList 中选择多个项目
【发布时间】:2009-10-21 20:45:04
【问题描述】:

在页面加载期间,索引 0 已被选中。那么这段代码语句选择了索引1:

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

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

为什么会出现异常?我该如何解决?

【问题讨论】:

  • 异常信息的哪一部分你不明白?
  • 我理解异常的内容。但是,我不明白为什么会这样。后来我想通了。看我下面的回答

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


【解决方案1】:

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

我尝试通过事先清除列表选择来解决此问题。

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;

【讨论】:

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

我刚遇到这个问题,发现它是由不同的东西引起的。我在多个下拉列表中添加了相同的 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 属性。所以在这种情况下,在第二个代码块的末尾,两个项目都在两个下拉列表中被选中。

【讨论】:

  • 这是吸引我的场景。我将相同的 ListItem 添加到多个下拉列表控件中。必须将唯一的列表项对象绑定到每个唯一的下拉列表控件。
  • 这也帮助了我。爱 stackoverflow ;-)
  • 谢谢 Jefferson,我也是这样做的。我得到了帮助。
  • 这里也一样。我花了好几天才找到这个。只阅读排名靠前的答案是我的坏事。这是我的赞成票
  • 这个场景也出现在我的 VB 的 ASP.Net Web 应用程序上。它直到更远的道路才显现出来!在多个下拉列表中使用相同的列表项会导致麻烦。谢谢楼主,干得好。
【解决方案3】:

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

首先是错误信息:

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 部分进入应用程序的另一个焦点区域。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-10
    • 2013-07-06
    • 2014-01-26
    • 1970-01-01
    • 2019-09-19
    • 2011-05-21
    • 1970-01-01
    • 2012-08-25
    相关资源
    最近更新 更多