0

我有一个页面,它有一个数据网格和一个下拉列表,除了其他内容之外,它位于页面的特殊区域(比如 appArea),它加载到 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。

4

1 回答 1

1

原来应用 ViewStateModeById 属性解决了这个问题。

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

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

于 2013-08-23T09:16:09.553 回答