第一:
把DATAGRID的属性ALLOWSORTING改为TRUE
在PAGELOAD和DataGrid1_SortCommand、SortCommand中加
p
            
if(DataGrid1.Attributes["SortDirection"]=="DESC"//这里kjkm_dg为datagrid   ID
            {
                DataGrid1.Attributes[
"SortDirection"]="ASC"//这里给datagrid增加一个排序方向属性,且默认为升序排列;
            }

            
else
            
{
                DataGrid1.Attributes[
"SortDirection"]="DESC"
            }

            mikecatbind();




protected void mikecatbind()
        
{
            DataView dv
=new DataView();
            SqlConnection conn 
= new SqlConnection("Server=.;UID=sa;PWD=;database=WJOA");
            
string sql = "select * from UnitCode_T";
            SqlDataAdapter da 
= new SqlDataAdapter(sql,conn);
            DataSet ds 
= new DataSet();
            da.Fill(ds,
"zwb");
   
            
string SortDirection=this.DataGrid1.Attributes["SortDirection"];
            dv
=ds.Tables["zwb"].DefaultView;  //来自web service的dataset,这里随便一个ds就可以;
            dv.Sort="UnitCode"+" "+this.DataGrid1.Attributes["SortDirection"]; //指定视图的排序方式;
            this.DataGrid1.DataSource=dv; //指定数据源
            this.DataGrid1.DataBind(); //数据绑定

        }

private void kjkm_dg_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
        
{
            
if(this.kjkm_dg.Attributes["SortDirection"]=="DESC"//这里kjkm_dg为datagrid   ID
            {
                kjkm_dg.Attributes[
"SortDirection"]="ASC"//这里给datagrid增加一个排序方向属性,且默认为升序排列;
            }

            
else
            
{
                kjkm_dg.Attributes[
"SortDirection"]="DESC"
            }

            mikecatbind();

        }

在.Net 中 DataGrid 虽然有排序的功能,但并不支持双向的排序。用到了,看了些相关的帖子,自己尝试了一种方法,竟然也行得通,主要是用DataGrid.Attributes 存了一个参数,同时在onSortCommand中修改了DataGridColumn的SortExpression. 代码如下: 
private void BindData() 

 DataTable dt 
= .; 
 
if(dt != null
 

  DataView dv 
= dt.DefaultView; 
  
if(DataGrid1.Attributes["SortBy"!= null
  

   dv.Sort 
= DataGrid1.Attributes["SortBy"]; 
  }
 

  DataGrid1.DataSource 
= dv; 
  DataGrid1.DataBind(); 
 }
 
}
 

private void DataGridSort(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e) 

 DataGrid1.Attributes[
"SortBy"= sortstr; 
 
this.BindData(); 

 
//找到排序的列,并修改把它的排序属性 

 DataGridColumn clm 
= null

 
for(int i=0;i<DataGrid1.Columns.Count;i++
 

  
if(DataGrid1.Columns[i].SortExpression == e.SortExpression ) 
  

   clm 
= DataGrid1.Columns[i]; 
   
break
  }
 
 }
 

 
if(clm == nullreturn

 
if(e.SortExpression.ToLower().IndexOf("desc"> 0
 

  clm.SortExpression 
= e.SortExpression.ToLower().Replace("desc","asc"); 
 }
 
 
else 
 

  
if(e.SortExpression.ToLower().IndexOf("asc"> 0
  

   clm.SortExpression 
= e.SortExpression.ToLower().Replace("asc","desc"); 
  }
 
  
else 
  

   clm.SortExpression 
= e.SortExpression.ToLower() + " desc"
  }
 
 }
 
}

第二:
posted on 2006-06-23 15:41  过江  阅读(1563)  评论(0编辑  收藏  举报