首页 > 开发 > 综合 > 正文

实用技巧:datagrid的正反双向排序

2024-07-21 02:29:49
字体:
来源:转载
供稿:网友
  呵呵,本没有写文章之意,看到好友阿好(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();  }

  好了,试试看看是不是可以进行正倒序排列啦。菜鸟学堂:
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表