{...获取数据库内容保存到局部变量dt中
Session["DG"] = dt;
dt.Clear();
dt = (DataTable)Session["DG"];
datagird.DataSource = dt;
datagrid.DataBind();}
VS2005中:为什么这样就得不到Session中保存的数据,调试时特意看过原来dt里有数据,我故意这样转换后datagrid中就得不到数据了。
把dt.Clear()这句去掉后datagrid才显示数据,但在同一个页面的其他函数中用DataTable dt = (DataTable)Session["DG"];这句怎么只得到原dt里的字段却没有数据,也就是Session["DG"]并不为null,只是没数据。
用Session保存Datatable是这么用的吧,这到底是什么错误,郁闷死了。
Session["DG"] = dt;
dt.Clear();
dt = (DataTable)Session["DG"];
datagird.DataSource = dt;
datagrid.DataBind();}
VS2005中:为什么这样就得不到Session中保存的数据,调试时特意看过原来dt里有数据,我故意这样转换后datagrid中就得不到数据了。
把dt.Clear()这句去掉后datagrid才显示数据,但在同一个页面的其他函数中用DataTable dt = (DataTable)Session["DG"];这句怎么只得到原dt里的字段却没有数据,也就是Session["DG"]并不为null,只是没数据。
用Session保存Datatable是这么用的吧,这到底是什么错误,郁闷死了。
Session中保存的是dt的引用
dt.Clear();
这句将dt清空了,自然session按照引用来获取的是空DataTable了。
Session["DG"]是引用,dt也是引用 ,clear()是清空引用指向的对象..
protected void Button_Click()
{
DataTable dt=new DataTable();
dt=(DataTable)Session["DG"];
datagrid2.DataSource=dt;
datagrid2.DataBind();
}用来绑定新的Datagrid控件。
回11楼:数据原来肯定是有了的,调试时看过的。
回9楼和10楼:不用这暂存数据那用什么方法的,看一些书上说的都是用Cache暂存,那效率高?还是用其他的方法?另外讲到暂存效率,怎么在页面中暂存一些变量的值,我在页面中使用网上的通用存储过程分页的方法,用ViewState来存储PageIndex,PageSize.除了这方法其他的好像页面一刷新值就没了,主要保存的PageIndex,PageSize值还是动态变化的。这些高手们是用的什么方法,在此先谢谢高手指导。
对于我提的问题后来经过反复测试发现用DataSet就可以把数据在Session里保存下来,汗。
如果是前台页面显示,一般用cache,这样即所有用户共享一部分数据,只会有一个数据集,比较划算。。