2

我发现了很多帖子,人们试图解决SelectedIndexChanged什么时候不工作的问题EnableViewState='false'

我有点困惑为什么控制状态不启动并允许它工作,但如果有人也能解释这一点,那就是加分。

一些“黑客”非常“黑客”。就像在页面本身的视图状态上设置一个与下拉值相对应的值,然后将该值与回发期间收到的值进行比较。

我正在寻找最好的最优雅的解决方案(如果有一个好的解决方案)。

我不知道这是否是一个聪明的派生控件或更聪明的东西,但我想确保该解决方案足够通用以“值得信赖”,而不仅仅是一个仅适用于相关特定页面的黑客(这对于这样的黑客!)。

4

3 回答 3

5

如果您真的想知道为什么以及如何工作,我建议您阅读以下文章:

真正理解 ViewState

这不是一本容易阅读的书,但确实涵盖了人们在使用视图状态时经常遇到的所有问题。它涵盖了为什么在 Page_Init 而不是 Page_Load 中填充时一切正常。

于 2009-01-17T19:31:13.910 回答
0

在将列表添加到控件集合之前绑定列表(而不是在上面评论者所说的之后)。

- 上述文章的作者 :)

于 2009-07-08T05:53:04.807 回答
-1

尝试在较早的时候将数据加载到 DropDownList 中。IE。在初始化完成中。我还没有测试过,但我认为这应该可以解决问题。

编辑:

它没有成功。我已经测试过了,它的效果并不令人满意。正如 Ken Browning 在关于这个问题的另一个答案中指出的那样,如果 SelectedIndex 不是其初始值,则始终会触发 SelectedIndexChanged 事件。

为什么 SelectedIndex 不存储在 ControlState 中而不是 ViewState 中。我们可以欺骗 ViewState 只跟踪 SelectedIndex,而不存储 Items 集合吗?

于 2009-01-17T12:57:22.723 回答