2012-07-09 16 views
2

我想減少來自我的DataGrid的ViewState中的負載,但它不像我預期的那樣工作。當我的頁面最初運行(並且我的數據網格爲空)時,它的視圖狀態大約爲1794字節。當我用EnableViewState="true"填充我的數據網格時,ViewState出來4,074,656字節,當我填充數據網格相同的數據,但EnableViewState="false",viewstate出來到2,477,356字節。我知道這個數字幾乎減半,但它仍然是一個很大的數字(並且與網格的大小成比例)。沒有任何東西來自數據網格,我預計這肯定會少於10,000(不比原來的1794大很多)。爲什麼它仍然如此之高?還有什麼我必須做的,以減少來自我的datagrid的視圖狀態負載?順便說一句,填充時的數據網格大約有1600行和27列。從DataGrid減少ViewState的大小

+2

只提取GridView/DataGrid所需的記錄「頁」「 」。 – TheGeekYouNeed 2012-07-09 23:31:51

+0

我沒有使用網頁。客戶端不希望在這裏實現分頁。 – 2012-07-09 23:52:12

+0

您是否解碼了ViewState以查看究竟在哪裏塞入?這可能會幫助您找到如何縮小它的方法。 [這是一個base64的ViewState解碼器](http://ignatu.co.uk/ViewStateDecoder.aspx) – hmqcnoesy 2012-07-10 00:15:11

回答

0

我意識到,我從我的數據層類檢索的數據表(用於我的DataGrid綁定)也被存儲在ViewState[]排序的目的(非常糟糕的做法),我只是發現了保存所有的數據在__VIEWSTATE隱藏字段。

它被存儲在ViewState[]因爲我懶得存儲/檢索搜索選項字段和重新查詢排序,沒有意識到後果。基本上,我的DataGrid擁有EnableViewState="true",我的__VIEWSTATE的規模增加了一倍。我從這個錯誤中學到了很多東西,並且我希望其他任何碰到這種情況的人也學到了一些東西。