2011-01-28 65 views
0

我有一個帶有gridview和日曆的報告頁面。當用戶加載頁面時,默認日期是今天,當他點擊日曆控件中的日期時,它會加載當天的報告數據。每個用戶都有不同的報告,數據每天在300-500行之間。在會話中緩存gridview數據

目前,我有一個linq查詢,以列表的形式返回一天中的數據。由於每個查詢的數據量相對較少,因此我想將查詢結果存儲在會話中,以便我可以從會話中進行分頁和排序,而無需返回數據存儲。

我正在做的是列表的列表,以便查詢加載時,數據將被保存,直到會話超時。例如,如果用戶選擇4-5個不同日期,則每個查詢都保存在會話中,然後如果他再次點擊其中某個日期,則函數首先檢查數據是否在會話中:GetQueryFromSession( DateTime TheDate)。

我被困在這。如何創建與會話對象一起使用的列表的列表。謝謝。

回答

1

店在會議

private Dictionary<DateTime, System.Data.DataTable> Data 
    { 
     get 
     { 
      if (Session["data"] == null) 
      { 
       Session[ "data" ] = new Dictionary<DateTime, System.Data.DataTable>(); 
      } 

      return Session[ "data" ] as Dictionary<DateTime, System.Data.DataTable>; 
     } 
     set 
     { 
      Session[ "data" ] = value; 
     } 
    } 

然後你就可以保持你的結果集,每個日期的字典

您可以使用列表也 例如字典:

Dictionary<DateTime, List<YourObject>> 

的GET QueryFromSession方法與此類似:

private DataTable GetQueryFromSession(DateTime TheDate) 
{ 
    return this.Data[TheDate]; 
} 

或者(如果你選擇了列表<>選項)

private List<YourObject> GetQueryFromSession(DateTime TheDate) 
{ 
    return this.Data[TheDate]; 
} 
+0

好,太好了。該集合如何與列表字典一起工作? – frenchie 2011-01-28 17:13:59

0

爲什麼不使用會話名稱,並根據所選日期爲每個數據集創建一個唯一密鑰?

你可以做的是按降序排列日期,將它們轉換爲字符串,並將它們連接起來形成唯一的ID。

然後使用ID將數據添加到會話對象。