• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 在ASP.NET 2.0中操作数据之四十三:DataList和Repeater数据排序(二)

在ASP.NET 2.0中操作数据之四十三:DataList和Repeater数据排序(二)

作者:heker2007 字体:[增加 减小] 来源:互联网 时间:2017-05-11

heker2007通过本文主要向大家介绍了repeater asp.net,asp:repeater,asp repeater分页,asp:repeater绑定数据,asp:repeater id等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

接着上篇介绍,上篇已经通过DropDownList简单实现了排序的功能,下面让我们看看带有分页的排序该怎么做。

第五步: 为使用默认分页的DataList添加排序的支持

  打开PagingSortingDataListRepeater文件夹里的SortingWithDefaultPaging.aspx和Paging.aspx 页。在Paging.aspx 页里查看源文件。将图8里选择的文本复制下来,然后粘贴到SortingWithDefaultPaging.aspx 页里的<asp:Content> 标签内。

http://files.weikejianghu.com/file_images/article/201605/2016051410503826.png
图 8: 复制粘贴代码

  然后将Paging.aspx页后台代码里的属性和方法也粘贴到SortingWithDefaultPaging.aspx页后台代码里。现在浏览SortingWithDefaultPaging.aspx页,它现在应该有和Paging.aspx页一样的外观和功能。

在ProductsBLL 里添加默认的分页和排序方法

  前面一章里我们在ProductsBLL类里创建了一个GetProductsAsPagedDataSource(pageIndex, pageSize)方法,它返回一个PagedDataSource对象。这个对象通过BLL的GetProducts()方法获取所有的product,然而绑定到DataList的只是那些和输入参数pageIndex 和 pageSize 相关的记录。

  本章前面我们已经通过在ObjectDataSource的 Selecting event handler里指定sort expression来添加了排序功能。当ObjectDataSource返回可排序对象时这个方法运转的很好,比如GetProducts()方法返回的ProductsDataTable。然而GetProductsAsPagedDataSource方法返回的PagedDataSource对象并不支持对它内部数据的排序,因此我们需要在将数据放入PagedDataSource前对GetProducts()方法返回的记录进行排序。

  在ProductsBLL类里建一个GetProductsSortedAsPagedDataSource(sortExpression, pageIndex, pageSize)方法。指定GetProducts() 方法返回的ProductsDataTable的default DataTableView的排序属性。

[System.ComponentModel.DataObjectMethodAttribute
 (System.ComponentModel.DataObjectMethodType.Select, false)]
public PagedDataSource GetProductsSortedAsPagedDataSource
 (string sortExpression, int pageIndex, int pageSize)
{
 // Get ALL of the products
 Northwind.ProductsDataTable products = GetProducts();
 // Sort the products
 products.DefaultView.Sort = sortExpression;
 // Limit the results through a PagedDataSource
 PagedDataSource pagedData = new PagedDataSource();
 pagedData.DataSource = products.DefaultView;
 pagedData.AllowPaging = true;
 pagedData.CurrentPageIndex = pageIndex;
 pagedData.PageSize = pageSize;
 return pagedData;
}
</div>

  GetProductsSortedAsPagedDataSource方法和前面一章里的GetProductsAsPagedDataSource方法有一点不一样。GetProductsSortedAsPagedDataSource多了一个sortExpression参数,将它的值赋给ProductDataTable的 DefaultView的Sort属性。并将ProductDataTable的DefaultView赋给PagedDataSource对象的DataSource。

  调用 GetProductsSortedAsPagedDataSource 方法并指定输入参数SortExpression的值

  完成这些后,下一步需要提供参数值。SortingWithDefaultPaging.aspx页的ObjectDataSource现在被配置用来调用GetProductsAsPagedDataSource方法并通过两个QueryStringParameters来传递参数,这些参数在SelectParameters集合里已经指定了。这两个QueryStringParameters参数表示GetProductsAsPagedDataSource方法的pageIndex 和 pageSize 参数从querystring里获取。

  修改ObjectDataSource的SelectMethod属性,让它调用GetProductsSortedAsPagedDataSource方法。然后添加一个新的QueryStringParameter来让sortExpression 参数通过querystring的sortExpression字段获取。将QueryStringParameter的默认值设为“ProductName”。

现在ObjectDataSource的声明标记语言看起来应该和下面差不多:

<asp:ObjectDataSource ID="ProductsDefaultPagingDataSource"
 OldValuesParameterFormatString="original_{0}" TypeName="ProductsBLL"
 SelectMethod="GetProductsSortedAsPagedDataSource"
 OnSelected="ProductsDefaultPagingDataSource_Selected" runat="server">
 <SelectParameters>
 <asp:QueryStringParameter DefaultValue="ProductName"
  Name="sortExpression" QueryStringField="sortExpression"
  Type="String" />
 <asp:QueryStringParameter DefaultValue="0" Name="pageIndex"
  QueryStringField="pageIndex" Type="Int32" />
 <asp:QueryStringParameter DefaultValue="4" Name="pageSize"
  QueryStringField="pageSize" Type="Int32" />
 </SelectParameters>
</asp:ObjectDataSource>
</div>

  现在SortingWithDefaultPaging.aspx页会按照product name的字母顺序排序。见图9。这是因为GetProductsSortedAsPagedDataSource方法的sortExpression 参数的默认值为“ProductName”。

http://files.weikejianghu.com/file_images/article/201605/2016051410503927.png
图 9: 默认的按照 ProductName 排序

  如果你手动添加一个sortExpression querystring字段–比如SortingWithDefaultPaging.aspx?sortExpression=CategoryName –那么结果会以指定的sortExpression来排序。然而在转到另外一个页时这个sortExpression参数并没有包含在querystring里。实际上当点上或者下一页时我们会返回Paging.aspx。而且当前并没有排序界面。用户可以改变数据排序的唯一方法是直接操作querystring。

创建排序界面

  我们首先要修改RedirectUser方法来将用户重定向到SortingWithDefaultPaging.aspx页(而不是Paging.aspx),并将sortExpression的值包含到querystring里。我们还应该添加一个只读的SortExpression属性。这个属性和前面一章里创建的PageIndex 和 PageSize属性相似,在sortExpression querystring字段存在时返回它的值,否则的话使用默认值“ProductName”。

  现在的RedirectUser方法只接收一个参数–显示的页的index。然而可能有些时候我们需要使用排序表达式将用户重定向到特定数据的页。我们将马上来为这个页创建排序界面,它将包含一些button来为指定的列排序。当其中一个button被点击时,我们需要传入合适的排序表达式的值来重定向用户。为了提供这个功能,创建两个RedirectUser方法。第一个接收page的index,第二个接收page index和sort expression(排序表达式)。

private string SortExpression
{
 get
 {
 if (!string.IsNullOrEmpty(Request.QueryString["sortExpression"]))
  return Request.QueryString["sortExpression"];
 else
  return "ProductName";
 }
}
private void RedirectUser(int sendUserToPageIndex)
{
 // Use the SortExpression property to get the sort expression
 // from the querystring
 RedirectUser(sendUserToPageIndex, SortExpression);
}
private void RedirectUser(int sendUserToPageIndex, string sendUserSortingBy)
{
 // Send the user to the requested page with the requested sort expression
 Response.Redirect(string.Format(
 "SortingWithDefaultPaging.aspx?pageIndex={0}&pageSize={1}&sortExpression={2}",
 sendUserToPageIndex, PageSize, sendUserSortingBy));
}

</div>

  本章的第一个例子里,我们使用DropDownList来创建了一个排序界面。我们将在这个例子里使用3个button(它们位于DataList上方)–一个表示为ProductName排序,一个为CategoryName,一个为SupplierName。添加三个button并设置它们的ID和Text。

<p>
 <asp:Button runat="server" id="SortByProductName"
 Text="Sort by Product Name" />
 <asp:Button runat="server" id="SortByCategoryName"
 Text="Sort by Category" />
 <asp:Button runat="server" id="SortBySupplierName"
 Text="Sort by Supplier" />
</p>
</div>

  然后为每个button创建一个Click event handler。这个事件处理将调用RedirectUser方法,并使用合适的排序表达式将用户返回到第一页。

protected void SortByProductName_Click(object sender, EventArgs e)
{
 // Sort by ProductName
 RedirectUser(0, "ProductName");
}
protected void SortByCategoryName_Click(object sender, EventArgs e)
{
 // Sort by CategoryName
 RedirectUser(0, "CategoryName");
}
protected void SortBySupplierName_Click(object sender, EventArgs e)
{
 // Sort by SupplierName
 RedirectUser(0, "SupplierName");
}

</div>

  第一次浏览该页时,数据

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • .NET中的repeater简介及分页效果
  • 详解ASP.NET数据绑定操作中Repeater控件的用法
  • 在ASP.NET 2.0中操作数据之四十四:DataList和Repeater数据排序(三)
  • 在ASP.NET 2.0中操作数据之四十三:DataList和Repeater数据排序(二)
  • 在ASP.NET 2.0中操作数据之四十二:DataList和Repeater数据排序(一)
  • 在ASP.NET 2.0中操作数据之四十一:DataList和Repeater数据分页
  • 在ASP.NET 2.0中操作数据之三十:格式化DataList和Repeater的数据
  • 在ASP.NET 2.0中操作数据之二十九:用DataList和Repeater来显示数据
  • asp.net实现DataList与Repeater嵌套绑定的方法
  • ASP.NET数据绑定之Repeater控件

相关文章

  • 2017-05-11datagrid绑定list没有数据 表头不显示的解决方法
  • 2017-05-11简单使用BackgroundWorker创建多个线程的教程
  • 2017-05-11未处理的事件"PageIndexChanging" 之解决方案
  • 2017-05-11Asp.net请求处理之管道处理介绍
  • 2018-08-20asp.net core下给网站做安全设置的方法详解
  • 2018-08-20ASP.NET Core 2.0 支付宝扫码支付的实现代码
  • 2017-05-11ASP.NET 中的Application详解
  • 2017-05-11asp.net 分页存储过程实例剖析心得
  • 2017-05-11Ajax异步无刷新对局部数据更新
  • 2017-05-11asp.net 不用GridView自带删除功能,删除一行数据

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 在ASP.NET 2.0中操作数据之四十七:用SqlDataSource控件插入、更新、删除数据
    • 浅谈ASP.NET Core 2.0 带初始参数的中间件(译)
    • asp.net SqlParameter如何根据条件有选择的添加参数
    • ASP.NET WebService中使用ASP.NET_SessionId的问题说明
    • 使用HtmlAgilityPack XPath 表达式抓取博客园数据的实现代码
    • ASP.net(c#)生成条形码 code39条码生成方法
    • asp.net(C#) 生成随机验证码的代码
    • 详解ASP.NET Core 之 Identity 入门(二)
    • 详解.Net core2.0日志组件Log4net、Nlog简单性能测试
    • asp.net DropDownList实现二级联动效果

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有