今天需要用到在GridView中點擊標題排序,琢磨了半天,終於成功了。在看代碼之前需要說明一點:
GridView本身有一个Sort()函数:public virtual void Sort ( string sortExpression, SortDirection sortDirection)使用上相当方便。但在实际使用中,常用的是点击每一列的标题来排序,点击标题会触发:protected void GridView_Sorting(object sender, GridViewSortEventArgs e)事件。从GridViewSortEventArgs中可以拿到SortDirection和SortExpression。但是GridView.Sort()本身也会触发GridView_Sorting(),如果在GridView_Sorting()中调用GridView.Sort()会无限的循环,直到堆栈溢出。這里使用DataView.Sort属性来排序,(Sort方法會觸發Sorting 事件),再重新綁定到GridView上。
代碼如下:
1、在源碼中給GridView中加入AllowSorting屬性
//1、在源碼的GridView中加入AllowSorting="true"
<asp:GridView ID="gvData" runat="server" AllowSorting="true">
</asp:GridView>
2、 ClbComunication.clsComunication類中定義了一個屬性,用於暫存從數據庫得到的資料:
注:定義此屬性是因為頁面顯示后,剛才得的資料表(mdatatable)的資料會被清空。所以將得到的資料暫存於類中,便於調用。
/// <summary>
/// 存放資料DataView屬性的變量
/// </summary>
private static DataView dvValue = new DataView();
/// <summary>
/// 存放資料DataView屬性
/// </summary>
public static DataView dv
{
get { return dvValue; }
set { dvValue = value; }
}
3、將資料放入類的DataView屬性中保存
//得到資料(BOFactory.bofactory.GetOracleDataTable(mSQL_Selection)為從數據庫得到資料)
DataTable mdatatable = BOFactory.bofactory.GetOracleDataTable(mSQL_Selection);
//將需要排序的資料放入DataView中(主要用到此句)
ClbComunication.clsComunication.dv = new DataView(mdatatable);
//資料與界面上的GridView綁定
gvData.DataBind();
4、訂閱GridView的Sorting事件
//GridView的Sorting事件
gvData.Sorting += new GridViewSortEventHandler(gvData_Sorting);
5、編輯GridView的Sorting事件方法,其中用到的GridViewSortDirection屬性的定義如"6"所示
/// <summary>
/// GridView的Sorting事件方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void gvData_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = e.SortExpression.ToUpper();
if (GridViewSortDirection ==SortDirection.Ascending)
{
GridViewSortDirection = SortDirection.Descending;
//排序並重新綁定
bindData(sortExpression, "DESC");
}
else if (GridViewSortDirection == SortDirection.Descending)
{
GridViewSortDirection = SortDirection.Ascending;
//排序並重新綁定
bindData(sortExpression, "ASC");
}
}
6、定義排序方向屬性,此属性用viewstate保存每次排序的方向:
/// <summary>
/// 排序方向屬性
/// </summary>
public SortDirection GridViewSortDirection
{
get
{
if (ViewState["sortDirection"] == null)
ViewState["sortDirection"] = SortDirection.Ascending;
return (SortDirection)ViewState["sortDirection"];
}
set
{
ViewState["sortDirection"] = value;
}
}
7、排序並綁定數據
/// <summary>
/// 排序並綁定數據
/// </summary>
/// <param name="sortExpression"></param>
/// <param name="sortDirection"></param>
protected void bindData(string sortExpression, string sortDirection)
{
ClbComunication.clsComunication.dv.Sort = sortExpression;
if (sortDirection != String.Empty)
{
ClbComunication.clsComunication.dv.Sort = sortExpression+" " + sortDirection;
}
gvData.DataSource = ClbComunication.clsComunication.dv;
gvData.DataBind();
}
分享到:
相关推荐
给ASP.NET中GridView自动添加列排序箭头指示器图片控件源代码
没分换分了 增删改,分页排序,无代码,导入导出等
ASP.Net2.0 GridView 多列排序
通过javascript 实现asp.net 在客户端浏览器直接排序,不会向服务器发送请求
一个利用Jquery + ASP.NET实现Gridview的排序例子程序。
asp.net中GridView控件的各种操作方法,使用大全,附加数据库。包含:GridView导入导出,多层嵌套,表头表尾,分页排序,结合控件,设置属性,增除删改,主键索引...物超所值,亲情放送!~
一个多功能的GridView,在asp.net原有的GridView上增加了11个新功能,包括分组,冻结窗口,鼠标事件,复合排序,联动复选框,响应行的单击事件和双击事件,行右键菜单,自定义分页样式,合并指定列的相邻且内容相同的单元格等...
使用javascript操作table排序才是实用的排序,这样排序不怎么好,但是有时候可能会用来,记录一下。
内容索引:.NET源码,Ajax相关,AJAX,GridView 中模仿GridView列表的列宽拖动功能示例程序,并且可以实现鼠标经过、点击、不响应时候分别用不同的颜色来区分,移动可改变列的顺序、改变列宽、排序,chy.xml用于存储...
GridView无刷新排序(Ajax+ASP.NET+XML)! 很值得下载看看!资源免费,大家分享!!
asp.net行数据拖拽重新排序 可以任意绑定数据,数据绑定后可以拖动行进行重新排序,亲测可行,拿出来分享
asp.net中的GridView自定义分页及排序代码,对GridView控件进行扩展,实现效果不错的自定义分页及排序代码,供大家学习参考!
ASP.net中Gridview使用实例大全 表头表尾 导入导出 多层嵌套 分页排序 结合控件 设置属性 增除删改 主键索引
ASP.NET源码——GRIDVIEW无刷新AJAX 排序源码.zip
GridView排序.txt GRID控件删除之前确认.txt javascript小技巧.doc MVC在Web系统中的模式与应用.doc NET中各种数据库连接大全.doc Treeview控件2.0与ACCESS数据库.txt TreeView使用集锦.txt Web Service服务.doc WEB...
最近在使用ASP.net 2.0的GridView 控件时,发现排序与分页功能Microsoft实现的都很简单,比如排序,在点击列名的时候来触发整页的PostBack,然后排序,但是在列头上没有一个显示升序降序的图标,这会让最终用户使用...
基于ASP.NET的GridView控件数据维护编辑及排序翻页查询功能的实现,采用VS2005+C#+ASP.NET实现,基于VS2005提供的GridView扩展了数据的增加、修改、删除、查询、翻页、排序、查询、分组等功能。
GridView排序.txt GRID控件删除之前确认.txt javascript小技巧.doc MVC在Web系统中的模式与应用.doc NET中各种数据库连接大全.doc Treeview控件2.0与ACCESS数据库.txt TreeView使用集锦.txt Web Service服务.doc WEB...