手动指定GridView排序

 在asp.net 2.0中,如果是使用gridview的话,可以要对gridview进行排序的话,可以配合sqldatasource来使用,已经内建了排序的功能(即点列标题进行排序),但如果要配合其他数据源控件的话,则必须使用

自定义的排序方法了,今天学习到了如何用dataset搭配gridview的话,进行标题排序,现将其方法摘录如下:

     首先,用一个方法将数据取出来,放到DATASET里去,如下代码

private DataSet GetData()

{

 

SqlConnection myConnection = new SqlConnection(ConnectionString);

 

SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Categories", myConnection);

 

DataSet ds = new DataSet();

 

ad.Fill(ds);

 

return ds;

 

}

然后,对gridview进行如下设置

  <asp:GridView ID="GridView1" runat="server" AllowSorting="True" OnSorting="GridView1_Sorting">

</asp:GridView> 

     然后,其gridview_sorting的自定义过程如下,首先添加一个属性

    public SortDirection GridViewSortDirection

{

 

get

 

{

 

if (ViewState["sortDirection"] == null)

 

ViewState["sortDirection"] = SortDirection.Ascending;

 

return (SortDirection) ViewState["sortDirection"];

 

}

 

set { ViewState["sortDirection"] = value; }

 

}

 

     GridViewSortDirection 是一个简单的属性,用viewstate保存每次排序的方向

而GridView1_Sorting的代码如下:

    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)

{

 

string sortExpression = e.SortExpression;

 

if (GridViewSortDirection == SortDirection.Ascending)

 

{

 

GridViewSortDirection = SortDirection.Descending;

 

SortGridView(sortExpression, "DESC");

 

}

 

else

 

{

 

GridViewSortDirection = SortDirection.Ascending;

 

SortGridView(sortExpression, "ASC");

 

}

 

}

    在这里,首先得到用户点击要排序列的标题,然后判断当前gridviewsortdirection的属性值来判断,如果已经是升序的话,则设置GridViewSortDirection为降序,并调用一个sortgridview过程;否则默认是调用升序来排序;

    而sortgridview方法如下:

    private void SortGridView(string sortExpression,string direction)

{

 

DataTable dt = GetData().Tables[0];

 

DataView dv = new DataView(dt);

 

dv.Sort = sortExpression +" "+ direction;

 

GridView1.DataSource = dv;

 

GridView1.DataBind();

 

}

    在这里,接收两个参数,分别是sortExpression和direction,然后构成dataview进行排序,十分好理解

 

GridView启用了排序,但是标题字段不能单击。。。9首先:   

   AllowSorting="True"     

    

   然后:   

   <asp:BoundField    DataField="Ssex"    HeaderText="test"    SortExpression="sex"    ItemStyle-HorizontalAlign="Center"/>   

                                                           <asp:BoundField    DataField="Ppower"    HeaderText="test"    SortExpression="power"    />   

                                                           <asp:BoundField    DataField="Sstate"    HeaderText="test"    SortExpression="isonline"      ItemStyle-HorizontalAlign="Center"    />   

                                                           <asp:BoundField    DataField="topics"    HeaderText="test"    SortExpression="topics"    />   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值