2

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

4

1 回答 1

0

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

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

于 2012-07-11T00:26:35.757 回答