2010-02-18 56 views
8

如何在會話中存儲數據表並從c#.net中的會話中檢索值?從會話中存儲和檢索數據表

+1

Session [「BufferDatatable」] = dt; ((DataTable)Session [「BufferDatatable」]).Rows.Add(titlelbl.Text,txtEnable.Text,txtValue.Text,txtValue.Text); 解決了這個問題 – subash 2010-02-18 11:50:38

+0

在這種情況下你能指導嗎? – subash 2010-02-18 12:02:03

回答

22

添加一個數據表到會話:

DataTable Tissues = new DataTable(); 

Tissues = dal.returnTissues("TestID", "TestValue");// returnTissues("","") sample  function for adding values 


Session.Add("Tissues", Tissues); 

Retrive該數據表的會話:

DataTable Tissues = Session["Tissues"] as DataTable 

DataTable Tissues = (DataTable)Session["Tissues"]; 
+1

我認爲這會影響應用程序/頁面的性能,例如,如果數據表包含10,000條記錄。 – Musikero31 2012-02-22 10:02:04

+1

@ Musikero31根據您的使用方式,它可以提高網頁的性能。 – 2012-07-25 19:39:59

1

你能做到這樣的,但儲存在一個DataSet對象會話效率不高。如果你有一個有很多用戶的網絡應用程序,它會非常快地阻塞你的服務器內存。

如果您確實需要這樣做,我建議您一旦不需要DataSet就將其從會話中刪除。

2

這只是一個方面的說明,但通常你想要做的是保持Session和ViewState的大小很小。我通常只在Session和ViewState中存儲ID和少量數據包。

例如,如果您想要將大塊數據從一個頁面傳遞到另一個頁面,則可以在查詢字符串中存儲ID,並使用該ID從數據庫或文件中獲取數據。

PS:但就像我說的,這可能是完全無關的查詢:)

2

要存儲在DataTable會話:

DataTable dtTest = new DataTable(); 
Session["dtTest"] = dtTest; 

從會話檢索DataTable

DataTable dt = (DataTable) Session["dtTest"];