ASP.NET翻頁后繼續維持排序
要想實現翻頁后繼續排序,實現這樣的效果:
比如共 15筆記錄,每頁顯示10條
則排序時:第一頁將前10條記錄排序,翻第二頁時后五條再單獨排序.
要注意以下幾點:
1.如果數據很多,最好不要把數據集放到緩存中(viewstate),影響性能
2. ViewState中存放上次是哪個e.expression并且存放此e.expression是升序還是降序
示例如下:
1.現有的排序事件是這樣寫的,這個是點擊上面排序標題時用:
2.下面這個方法是自己寫的,翻頁事件中調用。
上面兩方法只要修改要排序的字段名,就可以直接調用了.
1、方法很簡單實用,這里就不說了。
2、方法是這樣用的:
比如共 15筆記錄,每頁顯示10條
則排序時:第一頁將前10條記錄排序,翻第二頁時后五條再單獨排序.
要注意以下幾點:
1.如果數據很多,最好不要把數據集放到緩存中(viewstate),影響性能
2. ViewState中存放上次是哪個e.expression并且存放此e.expression是升序還是降序
示例如下:
1.現有的排序事件是這樣寫的,這個是點擊上面排序標題時用:
private void grdProjTrace_SortCommand(object source, DataGridSortCommandEventArgs e) { this.grdProjTrace.CurrentPageIndex = 0; DataView dv = 得到數據代碼; string strSort = ""; string strOrder ="";//排序方式。0,降序,1升序 if(ViewState["SortExpresstion"] != null) { strSort = ViewState["SortExpresstion"].ToString(); strSort = strSort.Substring(0,strSort.Length -1); strOrder = ViewState["SortExpresstion"].ToString(); strOrder = strOrder.Substring(strOrder.Length -1); } if(e.SortExpression == "CustomerName") { if(strSort != "CustomerName") { this.ViewState["SortExpresstion"] = ustomerName0"; dv.Sort = "CustomerName DESC"; } else { if(strOrder == "0") { this.ViewState["SortExpresstion"] = "CustomerName1"; dv.Sort = "CustomerName ASC"; } else { this.ViewState["SortExpresstion"] = "CustomerName0"; dv.Sort = "CustomerName DESC"; } } } if(e.SortExpression == "fullName") { if(strSort != "fullName") { this.ViewState["SortExpresstion"] = "fullName0"; dv.Sort = "fullName DESC"; } else { if(strOrder == "0") { this.ViewState["SortExpresstion"] = "fullName1"; dv.Sort = "fullName ASC"; } else { this.ViewState["SortExpresstion"] = "fullName0"; dv.Sort = "fullName DESC"; } } } this.grdProjTrace.DataSource = dv; this.grdProjTrace.DataBind(); } |
2.下面這個方法是自己寫的,翻頁事件中調用。
private void ChangePageDataBind() { DataView dv = 得到數據代碼; string strSort = ""; string strOrder ="";//排序方式。0,降序,1升序 if(ViewState["SortExpresstion"] != null) { strSort = ViewState["SortExpresstion"].ToString(); strSort = strSort.Substring(0,strSort.Length -1); strOrder = ViewState["SortExpresstion"].ToString(); strOrder = strOrder.Substring(strOrder.Length -1); } if(this.ViewState["SortExpresstion"] != null) { if(strSort == "CustomerName") { if(strOrder == "1") { this.ViewState["SortExpresstion"] = "CustomerName1"; dv.Sort = "CustomerName ASC"; } else { this.ViewState["SortExpresstion"] = "CustomerName0"; dv.Sort = "CustomerName DESC"; } } } if(this.ViewState["SortExpresstion"] != null) { if(strSort == "fullName") { if(strOrder == "1") { this.ViewState["SortExpresstion"] = "fullName1"; dv.Sort = "fullName ASC"; } else { this.ViewState["SortExpresstion"] = "fullName0"; dv.Sort = "fullName DESC"; } } } this.grdProjTrace.DataSource = dv; this.grdProjTrace.DataBind(); } |
上面兩方法只要修改要排序的字段名,就可以直接調用了.
1、方法很簡單實用,這里就不說了。
2、方法是這樣用的:
private void grdProjTrace_PageIndexChanged(object source, DataGridPageChangedEventArgs e) { try { try { this.grdProjTrace.CurrentPageIndex = e.NewPageIndex; } catch { this.grdProjTrace.CurrentPageIndex = 0; } this.ChangePageDataBind(); } catch(System.Exception errWS) { //異常 } } |
編輯推薦:ASP.NET初學者入門最佳實踐 |