所以我在ASPX页面中有一个GridView。
当我点击<asp:Button id="btnBindIt" runat="server" />
时,它会按如下方式绑定数据表:
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并且用户已经等了一次。
提前致谢!
答案 0 :(得分:11)
类级别变量无法在回发时保持其值。
但是有两种方法可以在页面的PostBack上维护数据:ViewState and Session State
。
但我建议您在场景中将其放入ViewState
。
ViewState["theDataTable"] = theDataTable;
Session["theDataTable"] = theDataTable;
然后你可以在页面回复中访问它:
DataTable theDataTable = (DataTable)ViewState["theDataTable"];
DataTable theDataTable = (DataTable)Session["theDataTable"];
答案 1 :(得分:5)
声明数据表如下,一切都将按预期工作
private string _theDataTable="theDataTable";
private DataTable theDataTable
{
get
{
if(ViewState[_theDataTable]==null)
return new DataTable();
return (DataTable)ViewState[_theDataTable];
}
set
{
ViewState[_theDataTable] = value;
}
}
喝彩!
答案 2 :(得分:-2)