【问题标题】:DropDownList selectindexchanged doesnt fire when reselecting original selected value取消选择原始选定值时,DropDownList selectedindexchanged 不会触发
【发布时间】:2010-06-09 07:54:16
【问题描述】:

我有一个表单,其中有两个下拉菜单。 一个决定会激发另一个决定。

基本规则是:

下拉 A -> 选择项目 1,2 或 3。下拉 B 加载列表 1 下拉 A -> 选择项目 4,5 或 6。下拉 B 加载列表 2

这在第一次加载和保存表单时可以正常工作。问题是当我编辑时。假设我在下拉 A 中选择并保存了第 3 项。

关于编辑:

如果我更改下拉 A,则每次更改时都会触发 select changed 事件,除非我重新选择已保存的内容。 这让我处于一种情况,我可以在下拉 A 中选择 3,但在下拉 B 中留下错误的列表,因为该选择不会重新触发事件。

我已经尝试了所有我能想到的技巧,但我似乎无法解决这个问题。

大家有什么建议吗?

(我们已经尝试过单选按钮列表和它同样的问题。在变量中设置值并尝试重置控件以清除它认为原始值的内容也不起作用。)

【问题讨论】:

  • 这绝对不是 DropDownList 的 SelectedIndexChanged 事件的标准行为。在 Page_Load 或 SelectedIndexChanged 事件中执行了哪些其他代码?即使在回发期间,是否有代码设置第一个下拉值?
  • 这是我的想法,它不应该是标准行为。我已经 .net 编码 7 年了,以前从未发现过。例如,国家/州组合相当普遍。该控件是标准下拉菜单。唯一的事情是这是一个动态表单构建器,即我创建了一个系统来“描述”数据库中的表单,它们是基于我所谓的“地图集”动态构建的。不过理论上,前端的行为应该是相同的。
  • 我想到的是在回发页面呈现之前设置的值,但您会想象这会阻止所有选择的触发。它只是不会为原始选择触发。我什至在 IE 开发人员中查看了生成的 html,但看不到任何被渲染到 html 中的东西,这会阻止它。我对此完全感到困惑。 (我什至还有 3 个其他人在我的办公桌前都在尝试建议,但没有人能弄清楚!
  • 调试会话显示重新选择原始值时根本没有引发事件!我完全糊涂了。 (自动回发确实发生了,它只是永远不会调用处理程序)

标签: asp.net events drop-down-menu


【解决方案1】:

不确定我是否完全理解您的问题,但请考虑在您的列表中添加一个额外的空白或虚拟项目(--请选择--),并将其作为默认选择的项目。这样一来,一旦用户选择了一个有效的项目,它就会始终与原始项目有所不同。

【讨论】:

  • 第一次输入时效果很好,因为我们有请选择作为第一个。问题在于编辑。 “请选择”不再是原来的选择。它是我们之前选择的任何东西。切换出去显然会触发事件,但切换回来(例如你意识到你一直都有正确的事件)无法触发,因为.net认为没有必要触发事件)。我猜它的设计并没有考虑到触发其他控件(正确!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
相关资源
最近更新 更多