在PostBack事件上没有调用LoadViewState

时间:2013-08-20 07:03:19

标签: asp.net .net datagrid viewstate control-state

我有一个页面,在页面的一个特殊区域(比如appArea)中有一个datagrid和一个与其他内容相关的下拉列表,它在desktopArea div中加载。

下拉列表应该在处理了正确运行的SelectedIndexChanged时重新加载数据网格。

在达到一些调整大小阈值后,我将这个appArea移动到另一个位置(比如mobileArea div,因为我必须使用事件绑定显示相同的区域等等),并使用下面的代码片段。

                var wrapper = document.createElement('div');
                $(wrapper).append($appArea.detach());
                $(wrapper).find('script').remove();
                $("wikiAppArea").parent().empty().append($(wrapper).children().contents());

将此appArea移动到mobileArea div后,如果我更改下拉列值,则会调用SelectedIndexChanged回发事件并绑定datagrid,但数据网格会丢失。

在页面上执行跟踪显示,在下拉单击时数据网格丢失的情况下,DataGrid根本不调用LoadViewState方法(正在调用SaveViewState和TrackViewState)。

从最初的调查开始,看起来控件层次结构正在发生变化,这导致了一些问题,即在回发期间不会调用DataGrid的LoadViewState。

在这种情况下,有没有办法强制调用LoadViewState。

1 个答案:

答案 0 :(得分:1)

原来应用ViewStateModeById属性修复此问题。

ViewStateModeByIdAttribute类用于指定需要按ID加载视图状态的控件。默认的视图状态加载行为是ASP.NET通过页面控制树中的索引加载控件的视图状态信息。按ID加载视图状态信息会产生性能成本,因为在加载视图状态信息之前必须专门搜索页面控制树。

ViewStateModeByIdAttribute类不适用于保存控件的视图状态信息。 ViewStateModeByIdAttribute类元数据属性仅对类声明有效。