繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> ASP.NET 翻页后继续维持排序

ASP.NET 翻页后继续维持排序

2007-10-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:要想实现翻页后继续排序,实现这样的效果:   比如共 15笔记录,每页显示10条   则排序时:第一页将前10条记录排序,翻第二页时后五条再单独排序.   要注意以下几点:   1.如果数据很多,最好不要把数据集放到...
关键字:排序 NET ASP

要想实现翻页后继续排序,实现这样的效果:

  比如共 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)

 {

  //异常

 }

}

责任编辑:admin
相关文章