Ev.*_*Ev. 6 c# asp.net datatable gridview
所以我在ASPX页面中有一个GridView.
当我点击<asp:Button id="btnBindIt" runat="server" />它时绑定数据表如下:
theDataTable = GetAllTheRecords();
gvTheGridView.DataSource = theDataTable;
gvTheGridView.DataBind();
Run Code Online (Sandbox Code Playgroud)
注意:theDataTable是会员
private DataTable theDataTable;
Run Code Online (Sandbox Code Playgroud)
这按预期工作.
现在,在很好地显示GridView之后,我想将数据导出为CSV,所以我现在单击<asp:Button id="btnExportIt" runat="server" />运行代码的那个:
exportToCsv(theDataTable);
Run Code Online (Sandbox Code Playgroud)
但是theDataTable没有.
所以我试过了
exportToCsv(gvTheGridView.DataSource)
Run Code Online (Sandbox Code Playgroud)
哪个也是null.
持久化这些数据的标准方法是什么?我真的不想再次点击数据库,因为它是一个很长的SPROC并且用户已经等了一次.
提前致谢!
Muh*_*tar 11
类级变量无法在回发时保持其值.
但是有两种方法可以在页面的PostBack上维护数据:ViewState and Session State.但我会在你的情景中建议将它放入ViewState.
ViewState["theDataTable"] = theDataTable;
Session["theDataTable"] = theDataTable;
Run Code Online (Sandbox Code Playgroud)
然后你可以在页面上回访它:
DataTable theDataTable = (DataTable)ViewState["theDataTable"];
DataTable theDataTable = (DataTable)Session["theDataTable"];
Run Code Online (Sandbox Code Playgroud)
声明数据表如下,一切都将按预期工作
private string _theDataTable="theDataTable";
private DataTable theDataTable
{
get
{
if(ViewState[_theDataTable]==null)
return new DataTable();
return (DataTable)ViewState[_theDataTable];
}
set
{
ViewState[_theDataTable] = value;
}
}
Run Code Online (Sandbox Code Playgroud)
干杯!
Ev.*_*Ev. -1
谢谢大家的回答。
我避免将不必要的内容放入 VeiwState 或会话中,因此我认为保留这些数据的最佳方法是缓存它。
我认为MemoryCache是最合适的地方,这就是我最终实现它的方式。
| 归档时间: |
|
| 查看次数: |
20652 次 |
| 最近记录: |