簡體   English   中英

回發后如何保持網格數據源

[英]How to keep grid DataSource after PostBack

我已經編寫了一個自定義網格視圖,我想將網格DataSource保存在ViewState但是出現了這個異常

類型'<> f__AnonymousType0`7 [[System.Int32,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089],[System.String,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089 ],[System.String,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089],[System.Boolean,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089],[System.String ,mscorlib,版本= 2.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089],[System.Int32,mscorlib,版本= 2.0.0.0,文化=中性,PublicKeyToken = b77a5c561934e089],[System.Int32,mscorlib,版本= 2.0 .0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]”中的程序集“ ExtAspNet.Examples,版本= 1.0.0.0,Culture = neutral,PublicKeyToken = null” 未標記為可序列化

現在,我想知道如何保留網格DataSource

您嘗試放入viewstate中的任何內容都必須使用[Serializable]屬性進行修飾,但是由於您具有匿名類型,因此無法做到這一點。

但是除此之外,不要做您想做的事情,它會大大增加不必要的頁面大小。 如果有的話,將您的數據源放入Session並在回發時重新綁定,但不要將其放在viewstate上。

但是請注意,將大量數據放入會話中既不可擴展,也不是一個好習慣,但您必須根據數據的大小以及從后端存儲中獲取數據所花費的時間來做出決定。 您是否測量了獲取數據的成本,例如可以使用Cache代替Session?

如果您將gridview數據源與數據表綁定,則可以這樣做。

聲明數據表,如下所示,一切將按預期工作

    private string _theDataTable="theDataTable";
    private DataTable theDataTable
    {
            get
            {
                    if(ViewState[_theDataTable]==null)
                            return new DataTable();
                    return (DataTable)ViewState[_theDataTable];
            }
            set
            {
                    ViewState[_theDataTable] = value;
            }
    }

干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM