在VS.net 2005中,提供了GridView控件,据说功能比DataGrid要强大很多,我没有用过DataGrid,所以关于效能、优劣的问题,本文不做探讨。
本文主要实现GridView使用DataSource绑定数据时,点击表格列标题即能排序,而且对于有条件查询的数据也可以进行排序。
1、实现排序的主要代码(网上收集):
private void databind(){ .....(获取DataSet省略) DataView dv = ods.Tables[0].DefaultView;//ods修改为你自己的DataSet ViewState["dt"]=ods.Tables[0]; //重要! GridView1.DataSource = dv; GridView1.DataBind(); } //添加两个属性 排序方向、排序字段 private string GridViewSortDirection { get { return ViewState["SortDirection"] as string ?? "ASC"; } set { ViewState["SortDirection"] = value; } } private string GridViewSortExpression { get { return ViewState["SortExpression"] as string ?? string.Empty; } set { ViewState["SortExpression"] = value; } } //获取点击后的排序方向 private string GetSortDirection() { switch (GridViewSortDirection) { case "ASC": GridViewSortDirection = "DESC"; break; case "DESC": GridViewSortDirection = "ASC"; break; } return GridViewSortDirection; } protected DataView SortDataTable(System.Data.DataTable dataTable, bool isPageIndexChanging) { if (dataTable != null) { DataView dataView = new DataView(dataTable); if (GridViewSortExpression != string.Empty) { //根据是否PageIndexChanging设置排序方向 if (isPageIndexChanging) { dataView.Sort = string.Format("{0} {1}", GridViewSortExpression, GridViewSortDirection); } else { dataView.Sort = string.Format("{0} {1}", GridViewSortExpression, GetSortDirection()); } } return dataView; } else { return new DataView(); } } //绑定 protected void GridView1_Sorting1(object sender, GridViewSortEventArgs e) { GridViewSortExpression = e.SortExpression; int pageIndex = GridView1.PageIndex; sortdatabinds(pageIndex, false); } protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { int pageIndex = e.NewPageIndex; sortdatabinds(pageIndex, true); } private void sortdatabinds(int pageIndex, bool getsort) { DataTable dt = (DataTable)ViewState["dt"]; GridView1.PageIndex = pageIndex; GridView1.DataSource = SortDataTable(dt as DataTable, getsort); GridView1.DataBind(); ControlShow.GVWrap(GridView1); doRowsAndCells(); }
2、GridView的例子
注意:AllowSorting=”True” 和 SortExpression=””
<asp:GridView ID="GridView1"? runat="server"? AllowPaging="True" PageSize="12" AutoGenerateColumns="False"? EmptyDataText="没有数据记录!" AllowSorting="True" OnSorting="GridView1_Sorting" Width="100%" OnPageIndexChanging="GridView1_PageIndexChanging"> <Columns> <asp:BoundField DataField="m_code" HeaderText="编号" SortExpression="m_code"/> <asp:BoundField DataField="m_name" HeaderText="名称" SortExpression="m_name"/> </Columns> </asp:GridView>
这样就OK了!总感觉GridView有点鸡肋的感觉,支持了SqlDataSource,感觉不太灵活,还是得写不少代码,可能是我对他们的本质不甚了解的原因,欢迎大家指教!
关键字: DataSource排序 GridView数据源 绑定数据源
兄弟,谢谢了。真的很好。正需要这东西。我写了个GridView因为是重几个数据库里查询出来的的,用SQL语句不方便(可能因为建数据库的时候没考虑好),所以分几步查询并合并到一个DataTable中,在网上找了很多排序的方法都不能用。你这个还真管用,一用就行了。好啊。
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论