PostBack后在GridView中持久化DataSource
本文关键字:持久化 DataSource GridView 后在 PostBack | 更新日期: 2023-09-27 17:57:40
所以我的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);
但CCD_ 4为空。
所以我尝试了
exportToCsv(gvTheGridView.DataSource)
这也是空的。
保持这些数据的标准方法是什么?我真的不想再次访问DB,因为这是一个相当长的SPROC,用户已经等过一次了。
提前感谢!
类级变量在回发时无法保持其值。
但是有两种方法可以在页面的PostBack上维护数据:ViewState and Session State
。但我建议在您的场景中,将其放在ViewState
中。
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是最合适的地方,这就是我最终实现它的方式