现在的位置: 首页 > 综合 > 正文

gridview按照表头排序

2013年12月05日 ⁄ 综合 ⁄ 共 2047字 ⁄ 字号 评论关闭

1. gridview允许排序

     AllowSorting="True"

 

2. 设置列的排序表达式

 <asp:BoundField DataField="name" HeaderText="视图" SortExpression="name" >
                                <HeaderStyle Wrap="False" />
                                <ItemStyle HorizontalAlign="Left" />
                            </asp:BoundField>

 

   其中,sortExpression时排序表达式,headerStyle wrap设置表头不换行,horizontalAlign设置该列的文本对齐方式。

 

3.实现sorting事件

 protected void gdvSchema_Sorting(object sender, GridViewSortEventArgs e)
    {

       //获取排序表达式
        String exp = e.SortExpression;

       //保存在viewState中

        ViewState["sortExp"] = exp;

       //重新绑定数据源
        gdvSchema.DataBind();
        getSearch(0);

    }

//绑定数据源的函数

private void getSearch(int iPageIndex)
    {

       //获取数据源
        String sql= "select * from test";

        SqlDataAdapter adp = new SqlDataAdapter (sql,conn);

        DataSet ds = new DataSet();
        adp.Fill(ds);

 

        if (ds.Tables.Count > 0)
        {

           try
           {

           DataTable dt = ds.Tables[0];
            if (dt.Rows.Count > 0)
            {
                //字段排序代码
                DataView dv = new DataView(dt);
                if (ViewState["sortExp"] != null)
                    dv.Sort = ViewState["sortExp"].ToString();
                gdvSchema.DataSource = dv;

                gdvSchema.PageIndex = iPageIndex;
                gdvSchema.DataBind();
            }
            else
            {
               

                   //无数据时处理方式
                    dt.Rows.Add(dt.NewRow());
                    gdvSchema.DataSource = ds;
                    gdvSchema.DataBind();
                    gdvSchema.Rows[0].Cells.Clear();
                    TableCell cell = new TableCell();
                    cell.Text = "未找到任何数据";
                    gdvSchema .Rows [0].Cells.Add(cell);
                    gdvSchema.Rows[0].Cells[0].ColumnSpan = dt.Columns.Count;
                    gdvSchema.Rows[0].Cells[0].HorizontalAlign = HorizontalAlign.Center;
             }

           }
                catch (Exception ex)
                {
                    Response.Write("getSearch() Exception: " + ex);
                }

        }

    }

 

 

PS:gridview执行sorting事件时会同时执行rowCommand事件,所以在执行的时候需要保证rowCommand中不执行会抛异常的代码。

抱歉!评论已关闭.