2010-02-18 97 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"];