PostBack之后将数据源保留在GridView中

问题描述

| 所以我的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是​​最合适的,这就是我最终实现它的方式。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...