在IndexChanged事件中修改了下拉列表的Items集合时,Page抛出了ViewState错误

时间:2011-02-25 22:01:46

标签: asp.net controls state

我有一个ASCX控件,这是一个特殊的下拉列表。我将该控件动态添加到页面并用数据填充它。此控件具有回发功能,可以更改第二个动态创建的标准下拉列表的内容。

当我更改第一个下拉列表中的选择时,indexchanged会触发并获取新数据并尝试将其放入第二个下拉列表的项目集合中,方法是首先清除它然后用新数据填充它。

这在第一次更改选择时工作正常,但是当我第二次选择时会抛出以下错误:

加载viewstate的控制树必须与上次请求期间用于保存viewstate的控制树匹配。

我没有在已触发的事件中添加或删除新控件,只是更改数据。而且,它第一次有效,但后来却没有。

如果我在子控件上禁用状态视图,那么控件根本不会更新数据。

希望这很清楚:)

谢谢!

1 个答案:

答案 0 :(得分:0)

在您的ASCX中 - 您是否在控件的OnInit事件中重新创建下拉列表每个时间?如果它们是动态创建的,则每次有回发时都需要创建它们,并且必须在之前将ViewState的值反序列化到控制树中。