请教:怎样实现点击datagrid表头,按升序排序,再点击一下,按降序排序?

解决方案 »

  1.   

    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();
      }
      

  2.   

    参考另类排序:http://www.cnblogs.com/insus/articles/1922815.html