怎样把DataGrid存放在ViewState中的无用数据卡掉
生活随笔
收集整理的這篇文章主要介紹了
怎样把DataGrid存放在ViewState中的无用数据卡掉
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作者:無間道的博客http://www.cnblogs.com/wangsaokui/articles/10031.html
怎樣把 DataGrid 存放在 ViewState 中的無用數據(有時候確實如此)卡掉,大家知道,一般而言DataGrid在ViewState中會存放表格中的所有數據,這樣會導致ViewState非常大;好比就這個論壇而言,光是ViewState就占了65k之多,多浪費啊。如果只是簡單的將DataGrid的EnableViewState設置為false,那么許多事件,如排序、換頁等都不會觸發,那么豈不是得不償失?其實在DataGrid中,有一個用來呈現數據的子控件:System.web.ui.webcontrol.DataGridTable,很遺憾,我在MSDN中沒找到它的相關說明,但是我在跟蹤DataGrid時,發現它的第一個子控件就是上述的Class(當然這是我在看到這片E文后才知道的,嘿嘿)。大家可以在SaveViewState中將生成的object的Type全部看看,再加上DataGrid.ViewState中的所有值,都不會發現DataGrid在ViewState中所保存的數據,那么是什么導致ViewState這么大,是什么在ViewState中存入數據源的數據呢?
答案就在DataGrid的這個子控件(這個暗黑人物的存在還真讓人的感情受不了)。所以呢,如果不需要在ViewState中存放這些數據源的數據(比如說為了加快速度,或者自定義分頁),我們只需要:DataGrid.Controls[0].EnableViewState = false,就萬事OK了。
???? (注意,要在DataGrid生成子控件后才能這樣寫,否則只能創建一個繼承于DataGrid的空件)
------------------------------------------------------------
我的使用:
我在Page_PreRender增加了一句:DataGrid.Controls[0].EnableViewState = false后經初步測試確實達到了上述效果!感覺不錯!
總結
以上是生活随笔為你收集整理的怎样把DataGrid存放在ViewState中的无用数据卡掉的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用Enter键取代tab键
- 下一篇: 在页面中导入文件