百度空间 | 百度首页 
 
查看文章
 
Gridview手动排序
2007-06-18 22:22
在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, DESCENDING);

}

else

{

GridViewSortDirection = SortDirection.Ascending;

SortGridView(sortExpression, ASCENDING);

}

}
    在这里,首先得到用户点击要排序列的标题,然后判断当前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"    />   

来源:www.newsbang.cn


类别:默认分类 | 添加到搜藏 | 浏览() | 评论 (12)
 
最近读者:
 
网友评论:
1
2007-06-23 21:39 | 回复
thank you very much!
 
2
2007-06-23 21:48 | 回复
SortGridView(sortExpression, DESCENDING); 这句不好用啊.找不到DESCENDING;
 
3
2007-06-26 16:18 | 回复
把DESCENDING换为desc就行了
 
4
2007-07-11 18:28 | 回复
把DESCENDING换为“DESC",把ASCENDING换为"ASC”, 另外把dv.Sort = sortExpression + direction; 改成 dv.Sort = sortExpression + "" + direction; 谢谢啦!! _^_ _^_
 
5
2007-07-22 17:00 | 回复
 
6
2007-08-24 05:56 | 回复
不錯,搞個友情鏈接去!
 
7
2007-08-26 18:07 | 回复
把DESCENDING换为“DESC",把ASCENDING换为"ASC”, 换为"ASC”,前面加空格为" ASC”才能用
 
8
2007-10-16 11:55 | 回复
确实是好东西啊
 
9
2007-10-23 09:48 | 回复
换了也不能用 当前上下文中不存在名称“DESC”!! 仔细看了看,前面就没有定义“DESC”和“ASC”! 怎么解决?谁知道?
 
10
2007-11-02 14:07 | 回复
为该字段添加 SortExpression 属性, 这样就可以了。
 
11
2007-11-09 11:16 | 回复
GetData()找不到啊,是数据源吗?
 
12
2008-03-20 11:11 | 回复
还是不行啊,点击后没反应,页面不会跳转 已经设置allowsort=true 了 是不是不支持 IE7.0啊
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu