[英]Persisting DataSource in GridView after PostBack
所以我的 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)
這也是 null。
持久化這些數據的標准方法是什么? 我真的不想再次訪問數據庫,因為它是一個相當長的 SPROC 並且用戶已經等待了一次。
提前致謝!
Class 級別變量在回發時無法保持其值。
但是有兩種方法可以在頁面的 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;
}
}
干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.