ASP.NET 翻頁后繼續維持排序
發表于:2007-06-30來源:作者:點擊數:
標簽:
要想實現翻頁后繼續排序,實現這樣的效果: 比如共 15筆記錄,每頁顯示10條 則排序時:第一頁將前10條記錄排序,翻第二頁時后五條再單獨排序. 要注意以下幾點: 1.如果數據很多,最好不要把數據集放到緩存中(viewstate),影響 性能 2. ViewState中存放上次是哪個e.
要想實現翻頁后繼續排序,實現這樣的效果:
比如共 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)
{
//異常
}
}
原文轉自:http://www.kjueaiud.com