今天需要用到在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 控件是.NET Framework中用于数据展示的重要组件,尤其在Web应用程序中,它提供了丰富的功能,如分页、排序、筛选等。在描述中提到的“asp.net gridview 固定标题和列”,指的是如何在GridView中...
ASP.NET GridView 是一个强大的数据呈现控件,常用于在网页上展示结构化的数据。它提供了丰富的功能,如排序、分页、筛选等。在实际应用中,用户可能希望自定义表格列宽,以便更好地查看和操作数据。"ASP.NET ...
ASP.NET GridView 控件是.NET Framework Web开发中常用的数据呈现组件,尤其在构建数据密集型Web应用程序时。这个实例主要展示了GridView的功能,包括增删改、分页、排序以及无代码操作,同时也涉及到数据的导入导出...
ASP.NET GridView控件是.NET Framework中的一个强大且常用的Web控件,主要用于展示数据,并提供了丰富的功能,如排序、分页、筛选和编辑等。在这个"ASP.NET GridView控件源代码大全"的压缩包中,您将找到一系列示例...
【Asp.net GridView详解】 Asp.net GridView控件是.NET框架中用于显示和操作数据的强大工具,尤其适合在Web应用程序中展示表格数据。这个实例是一个极好的起点,适合初学者学习,同时也为有经验的开发者提供了二次...
在标题“asp.net gridview 上传和下载”中,我们主要关注的是如何在GridView中实现文件的上传和下载功能。 首先,让我们来讨论文件上传。在ASP.NET中,可以使用FileUpload控件来实现文件上传功能。用户在前端选择...
GridView控件在ASP.NET中主要用于显示来自数据库或其他数据源的数据,并支持多种操作,如排序、分页、筛选和编辑。在"ASP.NET GridView+Bootstrap Demo Source Code"中,这个示例展示了如何利用GridView实现创建...
ASp.NET GridView 控件是ASP.NET Web Forms框架中一个强大的数据呈现组件,它允许开发者以表格形式展示数据,并提供各种交互功能,如排序、分页、筛选和编辑。"GridView 编辑模板"特指GridView控件在编辑模式下使用...
ASP.NET GridView 控件是.NET Framework 中用于数据展示的强大工具,尤其在Web应用程序中,它能够以表格形式方便地展示和操作数据库数据。GridView允许开发者轻松地进行数据绑定、排序、分页以及对数据进行编辑、...
本篇文章将详细讲解如何实现ASP.NET GridView的客户端排序功能,无需每次用户点击列头时都向服务器发送请求,从而提高应用性能。 一、客户端排序原理 客户端排序的核心思想是在用户点击列头时,利用JavaScript处理...
在ASP.NET开发中,`GridView`控件是非常常用的一个数据展示组件,它能够方便地将数据源中的数据以表格形式显示出来,并且提供了丰富的功能来增强用户体验,比如排序、分页、编辑等。在实际应用中,我们常常需要在`...
Bootstrap Pagination for ASP.NET GridView 是一个将流行的前端框架Bootstrap与ASP.NET中的GridView控件结合,用于实现优雅且响应式的数据分页功能的技术。GridView是ASP.NET中常用的数据展示控件,而Bootstrap则是...
ASP.NET GridView控件是Web开发中常用的数据展示组件,它能够方便地展示数据库或其他数据源中的数据,并提供了丰富的自定义和操作功能。在许多实际应用中,用户可能需要将GridView中的数据导出到Excel文件中,以便...
ASP.NET GridView 控件是.NET Framework 中用于数据展示和操作的强大工具。在网页开发中,GridView 经常被用来展示数据库中的数据,支持多种内置功能,如排序、分页和筛选。在“ASP.NET—005:GridView增加一行JS...
在ASP.NET开发中,GridView控件是一个非常常用的数据展示组件,尤其适合于表格形式的数据展示。本主题将深入探讨如何利用GridView控件来创建一个图片画廊。在ASP.NET应用中,实现“Display image gallery in ASP.NET...
在ASP.NET中,GridView控件是一个非常常用的组件,用于显示数据源中的表格数据。它提供了丰富的功能,如排序、分页、筛选等。而在实际应用中,常常有需求将GridView中的数据导出到Excel文件中,以便用户进行进一步的...
在ASP.NET开发中,GridView控件是用于展示数据表格的常用组件,它提供了丰富的功能,如分页、排序、筛选等。本知识点将详细介绍如何在GridView中为列添加自定义的排序箭头指示器图片控件,以提供更加直观的用户交互...
ASP.NET AJAX GridView 是一个强大的数据展示控件,它在ASP.NET框架中被广泛用于构建动态、交互式的Web应用程序。此技术允许用户在不重新加载整个页面的情况下更新GridView的数据,极大地提高了用户体验,因为用户...
ASP.NET GridView 控件是Web开发中的一个强大工具,主要用于展示数据集合,并允许用户进行交互式操作。这个控件是ASP.NET框架的一部分,适用于构建数据驱动的网页应用。在这个"asp.net gridview的使用例子"中,我们...
ASP.NET GridView 是一个非常强大的数据绑定控件,用于在网页上显示来自数据库或其他数据源的数据。这个"asp.net GridView自定义控件源码"显然提供了一种方式来美化默认的GridView,使其更具视觉吸引力和用户体验。 ...