• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 高中学习 > 正文

    【ASP.NET 2.0中GridView的排序方法】 NET2.0

    时间:2018-12-24 03:22:30 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘 要:在ASP.NET 2.0中GridView控件代替了ASP.NET 1.1中的DataGrid控件,该控件通常用于显示数据库查询结果。排序是我们在处理数据时经常会碰到的一类操作,GridView控件支持顺序排序和逆序排序。本文介绍在GridView控件中实现排序功能的三种方法。
      关键词:GridView 排序
      
      在ASP.NET 2.0中可以使用GridView控件自带的AllowSorting属性、AJAX技术或用户自定义方式来实现排序功能。下面我们具体介绍这三种方法。
      
      一、设置AllowSorting属性来实现排序
      
      只要用过GridView控件的就会发现实现排序功能很简单,只需要把该控件的AllowSorting属性设置为True就可以实现了。代码清单1中的页面演示如何对Pubs数据库中的jobs数据表进行排序。
      代码清单1 SortGrid.aspx
      <body>
      <form id=″form1″ runat=″server″>
      <div>
      <asp:GridView ID=″grdJobs″ runat=″Server″ AllowSorting=″true″
      DataSourceID=″SqlDataSource1″></asp:GridView>
      <asp:SqlDataSource ID=″SqlDataSource1″ runat=″server″ ConnectionString=″<%$ ConnectionStrings:pubsConnectionString %>″
      SelectCommand=″SELECT * FROM [jobs]″></asp:SqlDataSource>
      </div>
      </form>
      </body>
      当AllowSorting属性设置为True的时候,GridView的列标题就变成链接。点击列标题,就可以根据选中的列对GridView中的记录进行排序。但是要注意,当显式指定GridView控件的列时,例如绑定列,则需要指定列的SortExpression值才能支持排序,否则,点击此列的标题不会对数据排序。具体实现如代码清单2所示。
      代码清单2
      <body>
      <form id=″form1″ runat=″server″>
      <div>
      <asp:GridView ID=″grdJobs″ runat=″Server″ AllowSorting=″true″
      AutoGenerateColumns=″false″ DataSourceID=″SqlDataSource1″>
      <Columns>
      <asp:BoundFieldDataField=″job_id″HeaderText=″job_id″
      SortExpression=″job_id″/>
      <asp:BoundFieldDataField=″job_desc″ HeaderText=″job_desc″
      SortExpression=″job_desc″/>
      <asp:BoundFieldDataField=″min_lvl″ HeaderText=″min_lvl″
      SortExpression=″min_lvl″/>
      <asp:BoundFieldDataField=″max_lvl″ HeaderText=″max_lvl″
      SortExpression=″max_lvl″/>
      </Columns>
      </asp:GridView>
      <asp:SqlDataSource ID=″SqlDataSource1″ runat=″server″ ConnectionString=″<%$ ConnectionStrings:pubsConnectionString %>″
      SelectCommand=″SELECT * FROM [jobs]″></asp:SqlDataSource>
      </div>
      </form>
      </body>
      
      二、 使用AJAX排序
      
      默认情况下,无论何时在GridView中点击列名时将触发整页的PostBack,使包含此控件的页面都会回发到服务器端。但更多时候我们只想对页面GridView控件中的数据进行排序,而页面中其他内容不动,使用AJAX(Asynchronous JavaScript and XML)技术可以实现该操作。在声明GridView的时候将EnableSortingAndPagingCallbacks属性设置为True就可以启用AJAX。代码清单3中的页面在排序的时候就使用了AJAX。
      代码清单3 AjaxSort.aspx
      <body>
      <form id=″form1″ runat=″server″>
      <div>
       <%=DateTime.Now.ToString() %>
       <asp:GridView ID=″grdJobs″ runat=″Server″ AllowSorting=″true″
      EnableSortingAndPagingCallbacks=″true″
      DataSourceID=″SqlDataSource1″></asp:GridView>
      <asp:SqlDataSource ID=″SqlDataSource1″ runat=″server″ ConnectionString=″<%$ ConnectionStrings:pubsConnectionString %>″
      SelectCommand=″SELECT * FROM [jobs]″></asp:SqlDataSource>
      </div>
      </form>
      </body>
      在代码清单3中,在页面的顶部显示当前时间。但是在GridView中排序数据的时候这个时间并没有改变,这就说明并不是整个页面都被提交给服务器端,只有GridView控件的内容被提交更新。
      
      三、 用户自定义排序界面
      
      多次点击列标题,记录就会在顺序和逆序之间进行切换,但是在列标题上没有一个显示升序降序的图标,这会让最终用户使用时产生迷惑,因为不知道是升序了还是降序了。避免这种情况可以通过响应GridView控件的RowDataBound事件定制排序链接的外观。在为GridView控件绑定到数据源后,呈现每一行记录时都会触发这个事件。代码清单4就用图片来显示数据列的排序状态。
      代码清单4 ImageSorting.aspx
      <body>
      <form id=″form1″ runat=″server″>
      <div>
      <asp:GridView ID=″grdJobs″ runat=″Server″ AllowSorting=″true″
      DataSourceID=″SqlDataSource1″
      OnRowDataBound=″grdJobs_RowDataBound″></asp:GridView>
      <asp:SqlDataSource ID=″SqlDataSource1″ runat=″server″ ConnectionString=″<%$ ConnectionStrings:pubsConnectionString %>″
      SelectCommand=″SELECT * FROM [jobs]″></asp:SqlDataSource>
      </div>
      </form>
      </body>
      当用户点击列标题时,将触发事件protected void grdJobs_RowDataBound(object sender, GridViewRowEventArgs e),其程序代码如下:
      protected void grdJobs_RowDataBound(object sender, GridViewRowEventArgs e)
      {
      if (e.Row.RowType == DataControlRowType.Header)
      {
      foreach (TableCell cell in e.Row.Cells)
      {
      LinkButton SortLink = (LinkButton)cell.Controls;
      if (SortLink.Text == grdJobs.SortExpression)
      {
      if(grdJobs.SortDirection == SortDirection.Ascending)
       SortLink.Text += ″<img src=’asc.gif’ title=’Sort ascending’>″;
       else
      SortLink.Text += ″<img src=’desc.gif" title=’Sort descending’>″;
      }
      }
      }
      }
      在代码清单4中,图片是通过grdJobs_RowDataBound方法添加到标题行的。当前行的RowType属性用来确定当前行是否是标题行,然后,在选中排序列的LinkButton中添加一个HTML<img>标签。
      该页面执行后结果如图1所示。用户从图1中可以看到在job_id列标题旁有个向下的箭头,就很清楚现在GridView控件中的数据是按job_id降序显示的。当用户再次点击job_id列标题时,该标题旁会有个向上的箭头,表示当前是升序显示。
      
      总之,ASP.NET 2.0中的GridView控件的排序功能简单、快捷,而且很容易掌握。上述的三种方法,基本上可以满足用户的需求,用户可以根据自己的需要选择适合自己的方法。
      
      参考文献:
      [1]Stephen Walther,ASP.NET 2.0揭秘.人民邮电出版社,2007年10月.
      [2]江广顺,余松.ASP.NET 2.0+SQL Server热门网络应开开发详解.人民邮电出版社,2007年3月.

    推荐访问:排序 方法 ASP NET

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章