问题描述
|
所以我的ASPX页面中有一个GridView。
当我单击“ 0”时,它将绑定数据表,如下所示:
theDataTable = GetAllTheRecords();
gvTheGridView.DataSource = theDataTable;
gvTheGridView.DataBind();
注意:theDataTable
是会员
private DataTable theDataTable;
这按预期工作。
现在,在很好地显示GridView之后,我想将数据导出到CSV,因此现在单击运行代码的<asp:Button id=\"btnExportIt\" runat=\"server\" />
:
exportToCsv(theDataTable);
但theDataTable
为空。
所以我尝试了
exportToCsv(gvTheGridView.DataSource)
这也是空的。
保留此数据的标准方法是什么?我真的不想再次访问该数据库,因为它的SPROC相当长,并且用户已经等待了一次。
提前致谢!
解决方法
类级变量无法在回发时保持其值。
但是,有两种方法可以在页面的回发表中维护数据:
ViewState and Session State
。
但是我建议在您的方案中将它放在ѭ9中。
ViewState[\"theDataTable\"] = theDataTable;
Session[\"theDataTable\"] = theDataTable;
然后您可以在页面回发中访问它:
DataTable theDataTable = (DataTable)ViewState[\"theDataTable\"];
DataTable theDataTable = (DataTable)Session[\"theDataTable\"];
,声明数据表,如下所示,一切将按预期工作
private string _theDataTable=\"theDataTable\";
private DataTable theDataTable
{
get
{
if(ViewState[_theDataTable]==null)
return new DataTable();
return (DataTable)ViewState[_theDataTable];
}
set
{
ViewState[_theDataTable] = value;
}
}
干杯!
,谢谢大家的回答。
我避免不必要地将内容放入VeiwState或会话中,因此我认为保留此数据的最佳方法是对其进行缓存。
我认为MemoryCache是最合适的,这就是我最终实现它的方式。