【问题标题】:LoadViewState not called on PostBack Event在 PostBack 事件上未调用 LoadViewState
【发布时间】:2013-08-22 03:19:18
【问题描述】:

我有一个页面,它有一个数据网格和一个下拉列表,它位于页面的特殊区域(比如 appArea)中,该区域加载到 desktopArea div 中。

下拉列表应该在其 SelectedIndexChanged 处理良好时重新加载数据网格。

在达到某个调整大小阈值后,我将这个 appArea 移动到另一个位置(比如 mobileArea div,因为我必须显示具有事件绑定等完整的相同区域),下面有这个 sn-p。

                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。

【问题讨论】:

  • 数据网格覆盖了 SaveViewState 和 LoadViewState 方法。 TrackViewState 尚未在 DataGrid 中被覆盖

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多