【问题标题】:Decreasing size of ViewState from DataGrid从 DataGrid 减小 ViewState 的大小
【发布时间】:2012-07-09 09:56:01
【问题描述】:

我正在尝试减少来自我的 DataGrid 的 ViewState 负载,但它没有按预期工作。当我的页面最初运行时(并且我的数据网格为空),它的视图状态约为 1794 字节。当我用EnableViewState="true" 填充我的数据网格时,ViewState 的大小为 4,074,656 字节,而当我用 相同的数据EnableViewState="false" 填充数据网格时,视图状态的大小为 2,477,356 字节。我知道这个数字几乎减半,但它仍然是一个很大的数字(并且与网格的大小成正比)。如果没有来自数据网格的任何东西,我预计这肯定会小于 10,000(不比原来的 1794 大多少)。为什么它仍然这么高?我还必须做些什么来减少来自我的数据网格的视图状态负载吗?顺便说一句,填充后的数据网格大约有 1600 行和 27 列。

【问题讨论】:

  • 仅获取您所在的 GridView/DataGrid“页面”所需的记录。
  • 我没有使用页面。客户端不希望在这里实现分页。
  • 您是否对 ViewState 进行了解码,以查看其中究竟塞入了什么?这可能会帮助您准确找到如何缩小它。 Here's a base64 ViewState decoder
  • @hmqcnoesy 我知道它与数据网格有关,因为大小与数据网格的大小成正比;禁用或不禁用 EnableViewState。好主意,但我有机会一定要检查一下。谢谢!

标签: asp.net datagrid viewstate


【解决方案1】:

我意识到我从我的数据层类中检索到的 DataTable(用于将我的 DataGrid 绑定到)也被存储在 ViewState[] 中用于排序目的(非常糟糕的做法),我刚刚发现它的所有数据都存储在__VIEWSTATE 隐藏字段。

它被存储在ViewState[] 中,因为我懒得存储/检索搜索选项字段并重新查询以进行排序,而没有意识到后果。基本上,我的 DataGrid 有 EnableViewState="true",我的 __VIEWSTATE 的大小翻了一番。我从这个错误中学到了很多东西,我希望其他偶然发现这个错误的人也能学到一些东西。

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 2012-02-15
    • 2010-11-14
    • 2012-11-08
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多