問題描述:
我通過Dropdownlist來同步重新整理GridView中資料,預設綁定的GridView有5頁(PageSize=12)資料。當我選擇Dropdownlist的第一項時,查詢到兩頁資料,并綁定到GridView。GridView中顯示的也是兩頁。
當我點選第二頁時,問題出現了。
資料由2頁變成了5頁。
我的整個頁面都用的UpdatePanel包裹着的。
問題探讨:
大部分原因,是初學者在page_load中去綁定了dropdownlist。
asp.net會自動保持狀态,你不能在page_load中随便綁定Dropdownlist。充其量隻需要寫在 if(IsPostback) 判斷中,而不是每一回發都綁定。
其它控件也是一樣,注意不要在page_load中随便綁定資料。通常頂多隻在 !IsPostback 時綁定一次。
還有可能是分頁的時候你沒有把Dropdownlist的選項值傳遞到分頁中
解決方案:
針對第一種在page_load事件中綁定Dropdownlist而出現分頁出錯。那就是盡量不在Page_load事件中直接綁定Dropdownlist,通過if(ispostback)綁定。。。
針對未傳值問題,就是把Dropdownlist 的selectedindexchanged事件中的代碼拿出來寫成一個單獨的方法,直接在selectedindexchanged事件中調用該方法。
同時在PageIndexChanging事件中調用該方法,就會避免分頁出錯問題。
貼一下代碼。
protected void DropDownListDisplay_SelectedIndexChanged(object sender, EventArgs e)
{
BindGridView();
}
private void BindGridView()
{
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
BindGridView();
this.GridView1.DataBind();
}