关闭

DataGrid双向排序

标签: datagriddatasetstringexceptionaspservice
1075人阅读 评论(0) 收藏 举报

<HTML>相关脚本

<asp:datagrid id="dgd" runat="server" DataKeyField="Id" CellPadding="0" BorderColor="#BAC9DC"
                    AutoGenerateColumns="False" Width="100%" AllowSorting="True">
                    <AlternatingItemStyle CssClass="AlternatingItem"></AlternatingItemStyle>
                    <ItemStyle CssClass="item"></ItemStyle>
                    <HeaderStyle CssClass="header"></HeaderStyle>
                    <Columns>
                     <asp:BoundColumn DataField="Id" SortExpression="Id" HeaderStyle-ForeColor="#000000" HeaderText="编号"></asp:BoundColumn>
                     <asp:BoundColumn DataField="Name" SortExpression="Name" HeaderStyle-ForeColor="#000000" HeaderText="名称"></asp:BoundColumn>

                        </Columns>
                   </asp:datagrid>

 

 

.cs代码

// 在此处放置用户代码以初始化页面
   if( !this.IsPostBack)
   {
    if(this.dgd.Attributes["SortExpression"]==null) //这里dgd为datagrid   ID
    {
     this.dgd.Attributes["SortExpression"]="Id";  //这里给datagrid增加一个排序属性,且默认排序表达式;
     dgd.Attributes["SortDirection"]="ASC"; //这里给datagrid增加一个排序方向属性,且默认为升序排列;
    } 
    
    this.Query();    
   }

 

#region 查询并并绑定数据。  
  private void InternalQuery()
  { 
   //设定导入的起终地址   
   int startIndex = this.CurrentPageIndex * this.PageSize;
   try
   {     
    //初始化所建表的SQL语句

    string strSel = "SELECT  ID,Name  FROM  XTABLE    " ;
    DataSet ds = new DataSet();    
    SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,conn);
    MyAdapter.Fill(ds,startIndex,PageSize,"XTABLE"); 
    
    
    DataView dv=new DataView();
    string SortExpression=dgd.Attributes["SortExpression"];
    string SortDirection=dgd.Attributes["SortDirection"];
    dv=ds.Tables["loyor"].DefaultView;    //来自web service的dataset,这里随便一个ds就可以;
    dv.Sort=SortExpression+" "+SortDirection; //指定视图的排序方式;
    dgd.DataSource=dv; //指定数据源
    conn.Close();         
   }
   catch(Exception exc)
   {
    string s = exc.ToString();
   }
   
   this.dgd.DataBind();  
  }

排序

 private void dgd_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
  {
   string SortExpression=e.SortExpression.ToString();  //获得当前排序表达式
   string SortDirection="ASC"; //为排序方向变量赋初值
   if(SortExpression==dgd.Attributes["SortExpression"])  //如果为当前排序列
   {
    SortDirection=(dgd.Attributes["SortDirection"].ToString()==SortDirection?"DESC":"ASC");     //获得下一次的排序状态

   }
   dgd.Attributes["SortExpression"]=SortExpression;
   dgd.Attributes["SortDirection"]=SortDirection;
   this.InternalQuery();
  }   

以上可以实现点击datagrid的标题栏任一列,实现双向排序

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:517511次
    • 积分:3418
    • 等级:
    • 排名:第9793名
    • 原创:82篇
    • 转载:21篇
    • 译文:0篇
    • 评论:114条
    最新评论