datagrid的正反双向排序

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 mikecat888 的 blog

  迈克老猫(mikecat)

来自:老猫の理想

   呵呵,本没有写文章之意,看到好友阿好(hbzxf)的文章,也决定把平时的一些东西写出来和大家分享!有疏漏之处,敬请大家指教!

     在asp.net中利用datagrid控件按列进行排序很是方便。可是我们只能单项排序!如果我们需要正反排序那么就需要加入一些代码控制一下,下面我来详细讲解一下这个过程。

  首先我们需要将datagird控件的属性设置为 allowsorting="true",且需要排序列需要制定排序表达式 eg: sortexpression="kmdm"。设置好这些,我们进入代码文件,来编写响应排序的事件.

  首先在page_load时间中加入如下代码:

   if (!ispostback)
   {
    if(this.kjkm_dg.attributes["sortexpression"]==null) //这里kjkm_dg为datagrid   id
    {
     this.kjkm_dg.attributes["sortexpression"]="kmdm";  //这里给datagrid增加一个排序属性,且默认排序表达式为kmdm;
     kjkm_dg.attributes["sortdirection"]="asc"; //这里给datagrid增加一个排序方向属性,且默认为升序排列;
    }
    mikecatbind(); //绑定函数,下面介绍
   }

  protected void mikecatbind()
  {
   string sqlstr="select * from zc_kjkm";
   dataview dv=new dataview();
   
   string sortexpression=kjkm_dg.attributes["sortexpression"];
   string sortdirection=kjkm_dg.attributes["sortdirection"];
   dv=us.bind(sqlstr).tables[0].defaultview;  //来自web service的dataset,这里随便一个ds就可以;
   dv.sort=sortexpression+" "+sortdirection; //指定视图的排序方式;
   kjkm_dg.datasource=dv; //指定数据源
   kjkm_dg.databind(); //数据绑定

}

   进行完上面的设置后我们进入重要的环节,排序事件的编写:

  private void kjkm_dg_sortcommand(object source, system.web.ui.webcontrols.datagridsortcommandeventargs e)
  {
   string sortexpression=e.sortexpression.tostring();  //获得当前排序表达式
   string sortdirection="asc"; //为排序方向变量赋初值
   if(sortexpression==kjkm_dg.attributes["sortexpression"])  //如果为当前排序列
   {
    sortdirection=(kjkm_dg.attributes["sortdirection"].tostring()==sortdirection?"desc":"asc");     //获得下一次的排序状态

 }
   kjkm_dg.attributes["sortexpression"]=sortexpression;
   kjkm_dg.attributes["sortdirection"]=sortdirection;
   mikecatbind();
  }

 

好了,试试看看是不是可以进行正倒序排列啦。

本文关键:datagrid
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top