当前位置:编程学习 > C#/ASP.NET >>

Session存储DataTable数据变了,不知道咋回事

//首先给Session赋值
DataTable mydt = getdatatable();
session["tb"]=mydt;
//另外一个页面获取此Session里面的datatable
DataTable dt = new DataTable();
dt = (DataTable)Session["tb"];
//然后我给dt加了一列
dt.Columns.Add("签收人");
//又删除了列
dt.Columns.Remove("ID");

我操作的是被赋值后的DataTable
为什么Session["tb"]里面的DataTable也跟着变了呢?
我到另外一个页面再获取Session["tb"]  是被修改过的DataTable --------------------编程问答-------------------- DataTable是引用类型
DataTable dt = new DataTable();
dt = (DataTable)Session["tb"];
虽然你产生了一个新的DataTable
但是马上你又让它指向了Session中的那个。
修改它当然所有引用它的都变了。 --------------------编程问答-------------------- 那我应该怎么做才能保存这个table,重新查询太慢了! --------------------编程问答-------------------- 自己写循环拷贝 --------------------编程问答-------------------- 你是修改的对象,所以会修改。
用Clone()吧。 --------------------编程问答-------------------- dt = (Session["tb"] as DataTable).Copy();
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,