---->我有数据表,它传递给会话变量中的另一个页面。
---->现在在另一页上我将会话变量带入数据表。
datatable ds_table = new datatable();
ds_table = (datatable)session["table_value"];
---->所以问题是,当我从ds_table过滤一些行时。在会话变量中生效。如果某些行从ds_table中删除。然后它也会从会话变量中删除。
---->所以,有人告诉我为什么会发生这种情况?
帮助我。它是必要的。答案 0 :(得分:0)
好吧,如果session [“table_value”]指向数据表,并且您将其值(数据表)指定给另一个变量,然后将其更改为该变量,更改将在数据表中重新生成,因此您将看到您所说明的效果。
-----并非总是如此,但在您说明的情况下(数据表是共享资源吗?)
答案 1 :(得分:0)
听起来像是make a copy of the DataTable。试试这个:
ds_table = ((datatable)session["table_value"]).Copy();
如果DataTable很大,这将是不好的,所以记住这一点。也就是说,对大型DataTable使用Session听起来不是一个坏主意!
当然是否有效取决于你改变其状态的位置(我做了一些大的假设)。也许更详细地描述您正在做什么,并且您将获得更多帮助(例如代码示例)。
答案 2 :(得分:0)
我建议您在将数据表放入会话之前复制它。然后,它不会受到您稍后对原始数据表所做的任何更改的影响。
您所要做的只是declare a new DataTable variable and copy it:
private void CopyDataTable(DataTable table){
// Create an object variable for the copy.
DataTable copyDataTable;
copyDataTable = table.Copy();
// Insert code to work with the copy.
}
然后您可以将copyDataTable
置于会话中。