GridView根据列名进行排序

来源:互联网 发布:单片机通讯光耦隔离 编辑:程序博客网 时间:2024/05/22 13:44

我笨,就用最笨的方法记录下来,等下次用的着了,就不用在费尽脑细胞的想了。会者不难,难者不会,路过的,有好的建议请留下,加我好友,我向你学习;不会的,学习了,加我好友,我们共同进步。

 

 

前台页面:

GridView 添加属性 AllowSorting="True" 添加事件 OnSorting

<asp:GridView ID="gv_Sort" runat="server" AutoGenerateColumns="False"
        CellPadding="4" ForeColor="#333333" GridLines="None" AllowSorting="True"
        OnSorting="gv_Sort_Sorting" Height="171px" Width="362px">
    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
    <RowStyle BackColor="#EFF3FB" />
<Columns>
<asp:BoundField DataField="Id" HeaderText="学号" SortExpression="Id" />
<asp:BoundField DataField="Name" HeaderText="姓名" SortExpression="Name" />
<asp:BoundField DataField="Age" HeaderText="年龄" SortExpression="Age" />

<asp:BoundField DataField="Sex" HeaderText="性别" SortExpression="Sex" />
<asp:BoundField DataField="Address" HeaderText="家庭地址" SortExpression="Address" />
<asp:BoundField DataField="Phone" HeaderText="联系电话" SortExpression="Phone" />
</Columns>
    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
    <HeaderStyle BackColor="lightblue" Font-Bold="True" ForeColor="White" />
    <EditRowStyle BackColor="#2461BF" />
    <AlternatingRowStyle BackColor="White" />
</asp:GridView>

后置代码:

protected void Page_Load(object sender, EventArgs e)
{
      
 if (!IsPostBack)
        {
            // 设定初始排序参数值(默认按编号升序)
            this.gv_Sort.Attributes.Add("SortExpression", "Id");
            this.gv_Sort.Attributes.Add("SortDirection", "ASC");

            // GridView绑定数据
            GridView_DataBind();

        }

}

 

//获取数据源的方法

protected DataTable Get_DateSource()
{
        //新建一个DataTable

        DataTable dt_temp=new DataTable();
        //DataTable中添加列、添加测试数据

        dt_temp.Columns.Add("Id");

        dt_temp.Columns.Add("Name");

        dt_temp.Columns.Add("Age");

        dt_temp.Columns.Add("Sex");

        dt_temp.Columns.Add("Address");

        dt_temp.Columns.Add("Phone");

            
        dt_temp.Rows.Add(new object[]{"1","张玉宏","22","男","北京海淀区","13800138000"});

        dt_temp.Rows.Add(new object[]{"2","李文文","35","女","甘肃省兰州市","18611012011"});

        dt_temp.Rows.Add(new object[]{"3","周星星","27","男","河北省石家庄","15110120007"});

        dt_temp.Rows.Add(new object[]{"4","露西","23","女","吉林省长春市","1301201200"});

        dt_temp.Rows.Add(new object[]{"5","奥沙文","21","男","江西省南昌市","1505353553"});

 

        return dt_temp;

}

//GridView绑定数据源的方法

protected void GridView_DataBind()
{
       
 // 获取GridView排序数据列及排序方向
        string sortExpression = this.gv_Sort.Attributes["SortExpression"];
        string sortDirection = this.gv_Sort.Attributes["SortDirection"];
        // 调用业务数据获取方法
        DataTable dt_temp= Get_DateSource();
        // 根据GridView排序数据列及排序方向设置显示的默认数据视图
        if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection)))
        {
            dt_temp.DefaultView.Sort = string.Format("{0} {1}", sortExpression, sortDirection);
        }
        // GridView绑定并显示数据
        this.gv_Sort.DataSource = dt_temp;
        this.gv_Sort.DataBind();

}
 

 protected void gv_Sort_Sorting(object sender,GridViewSortEventArgs e)
{

        // 从事件参数取得要排序的数据列
        string sortExpression = e.SortExpression.ToString();
        // 排序方向设初始值为“顺序”
        string sortDirection = "ASC";
        // "ASC"与事件参数获取到的排序方向进行比较,GridView重新排序
        if (sortExpression == this.gv_Sort.Attributes["SortExpression"])
        {
            sortDirection = (this.gv_Sort.Attributes["SortDirection"].ToString() == sortDirection ? "DESC" : "ASC");
        }
        // 重新设定GridView排序数据列及排序方向
        this.gv_Sort.Attributes["SortExpression"] = sortExpression;
        this.gv_Sort.Attributes["SortDirection"] = sortDirection;
        this.GridView_DataBind();

}

 

 

 OK,就是如此,搞定,收工,试试正确与否。

 

需要说明的是:Page_Load事件中,初始排序参数设置不能如此,
this.gv_Sort.SortExpression = "Id";
this.gv_Sort.SortDirection = "ASC";
原因在于SortExpression、SortDirection均是GridView的只读属性,不能直接去赋值。

 

 

 

 

原创粉丝点击