我在ASP.Net是新的,我有一個關於如何工作圍繞的DataBind疑問:爲什麼我的DataTable行在綁定到GridView後被清除?
的Page_Load:如果的IsPostBack = false時,我打開我的DataTable VAR(在Page_Load之外聲明)和將其綁定到GridView。我的想法是保留DataTable,避免對數據庫進行新的查詢。
當我點擊了一個不同的頁面上,在PageIndexChanging有人提出,這樣做:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; GridView1.DataSource = _table; GridView1.DataBind(); }
這並沒有行之有效的,因爲電網表現出空。我在其他實例發現數據源完全重新加載,所以我把加載代碼的功能,改變了我的PageIndexChanging事件:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; LoadData(); GridView1.DataSource = _table; GridView1.DataBind(); }
不是它的工作就像一個魅力!我知道我的DataTable已經被清除了Page_Load和PageIndexChanging事件之間,可能是因爲數據表var並沒有被服務器保留(記住我是ASP.NET的新手......),但我想明白:
- 爲什麼服務器不保留該變量?
- 有一種方法可以繞過這種情況,以避免多個服務器數據請求?旁路中有什麼優點&缺點?
非常感謝!
Guffa是對的。您基本上必須在每個頁面加載時綁定數據,或將數據放入會話變量或Web緩存中。除非你有一個非常繁忙的網站,否則在每個請求中綁定你的數據並不是什麼大不了的事情。 – manit