我发现很多帖子都是人们在SelectedIndexChanged
时尝试解决EnableViewState='false'
无法正常工作的问题。
我有点困惑为什么控制状态没有启动并允许它工作,但如果有人也可以解释那就是奖励积分。
有些'黑客'非常'黑客'。就像在页面本身的viewstate上设置一个与下拉值对应的值,然后将该值与在回发期间接收的值进行比较。
我正在寻找最优雅的解决方案(如果有一个好的解决方案)。
我不知道这是一个聪明的派生控件还是更聪明的东西,但我想确保解决方案足够通用,以便'可信'而不只是一个仅适用于特定页面的黑客攻击(其中这种黑客很常见!)。
答案 0 :(得分:5)
如果你真的想知道为什么以及如何运作,我会建议以下文章:
这不是一个简单的阅读,但确实涵盖了人们通常遇到的所有问题。它涵盖了为什么一切都有效,如果你填入Page_Init而不是Page_Load。
答案 1 :(得分:0)
在将列表添加到控件集合之前绑定列表(不是按照上述评论者的说法)。
- 所述文章的作者:)
答案 2 :(得分:-1)
尝试在较早的时候将数据加载到DropDownList中。 IE浏览器。在InitComplete中。我没有测试过,但我认为应该这样做。
修改强>
它没有做到这一点。我已经对它进行了测试,但效果并不理想。正如Ken Browning在关于这个问题的另一个答案中所指出的那样,如果SelectedIndex不是其初始值,则总会触发SelectedIndexChanged事件。
为什么SelectedIndex不是存储在ControlState中而不是存储在ViewState中。我们可以欺骗ViewState只跟踪SelectedIndex,而不存储Items集合吗?