c# – 在PostBack之后在GridView中保留DataSource

所以我在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为null.

所以我试过了

exportToCsv(gvTheGridView.DataSource)

哪个也是null.

持久化这些数据的标准方法是什么?我真的不想再次点击数据库,因为它是一个很长的SPROC并且用户已经等了一次.

提前致谢!

解决方法

类级变量无法在回发时保持其值.

但是有两种方法可以在页面的PostBack上维护数据:ViewState和Session State.
但我建议你在Scenario中把它放在ViewState中.

ViewState["theDataTable"] = theDataTable;
Session["theDataTable"] = theDataTable;

然后你可以在页面上回访它:

DataTable theDataTable = (DataTable)ViewState["theDataTable"];
DataTable theDataTable = (DataTable)Session["theDataTable"];

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...