在ASP.NET 2.0中操作数据之四十四:DataList和Repeat
第七步:为自定义分页添加排序功能
在完成自定义分页之后,接下来我们将进一步完善排序功能。我们的ProductsBLL类提供了一个强大的方法——GetProductsPagedAndSorted。与GetProductsPaged方法相似,它同样接受startRowIndex和maximumRows参数,但除此之外,还有一个重要的sortExpression参数。要在SortingWithCustomPaging.aspx页面实现排序功能,我们需要进行以下步骤:
将ObjectDataSource的SelectMethod属性从GetProductsPaged更改为GetProductsPagedAndSorted,以支持新的排序功能。
接着,为ObjectDataSource的SelectParameters参数集合增加一个sortExpression参数。这个参数将用于指定排序的字段。
然后,创建一个私有的SortExpression属性,用于在postback过程中通过view state存储排序表达式。在没有设定任何sort expression的值时,默认值为“ProductName”。
接下来,修改ObjectDataSource的Selecting event handler,将ObjectDataSource的sortExpression参数值设定为SortExpression属性的值。这样,每次调用GetProductsPagedAndSorted方法时,都会按照我们设定的排序表达式进行排序。
创建排序界面。类似于之前的例子,我们将使用3个按钮来实现排序功能,允许用户根据产品名称(ProductName)、类别(Category)和供应商(Supplier)来排序。
```aspx
OldValuesParameterFormatString="original_{0}" TypeName="ProductsBLL" SelectMethod="GetProductsPagedAndSorted" OnSelecting="ProductsDataSource_Selecting">
```
再来看SortExpression属性的创建:
```csharp
private string SortExpression
{
get
{
object o = ViewState["SortExpression"];
return o == null ? "ProductName" : o.ToString();
}
set
{
ViewState["SortExpression"] = value;
}
}
```
在ObjectDataSource调用GetProductsPagedAndSorted方法之前,在Selecting event handler中添加如下代码来设定sortExpression参数:
```csharp
e.InputParameters["sortExpression"] = SortExpression;
```
至此,排序功能的框架已经搭建完毕。现在只需完善排序界面的相关逻辑和按钮的响应事件,即可实现根据产品名称、类别和供应商进行灵活的排序操作。旅程:ASP.NET中的排序与分页功能实现
在ASP.NET Web Forms应用程序中,我们经常会遇到需要对数据进行排序和分页的需求。本文将介绍如何通过简单的ASP控件和代码实现这一功能。
让我们在界面上放置三个按钮,分别用于按产品名称、类别和供应商名称进行排序。这些按钮可以通过ASP.NET的服务器控件实现。例如:
```html
```
接下来,为每个按钮创建Click事件处理程序。在这些程序中,我们将设置StartRowIndex为0(因为我们每次点击按钮都需要重新加载数据),并设置SortExpression为相应的值,然后重新绑定数据到Repeater控件。代码示例如下:
```csharp
protected void SortByProductName_Click(object sender, EventArgs e)
{
StartRowIndex = 0;
SortExpression = "ProductName";
Products.DataBind(); //假设Products是你的数据源控件名称
}
// 对于SortByCategoryName和SortBySupplierName按钮同样处理
```
我们在进行自定义分页和排序时需要注意一些细节。例如,在图18中展示的是按照类别排序的一页数据。在实现自定义分页时,我们需要使用实际的列名(如CompanyName),而不是别名(如SupplierName)。这是因为我们的存储过程需要一个实际的列名作为sort expression传递给ROW_NUMBER()函数。ROW_NUMBER()函数是SQL Server中的一个函数,用于生成一个行号,根据这个行号我们可以实现分页功能。我们必须使用真实的列名作为expression。
无论是DataList还是Repeater都没有提供内置的排序支持。但是通过自定义界面和代码,我们可以实现这样的功能。我们可以在业务逻辑层(BLL)中添加一个接收sort expression的方法,然后在ObjectDataSource的Select方法中通过DataSourceSelectArguments对象传递这个信息。这样我们就可以在DataList或Repeater中实现排序功能了。这个过程并不复杂,只需要一些基本的编程知识和耐心。记住,编程的乐趣在于解决问题和创造新的东西。祝编程快乐!本文作者Scott Mitchell是ASP和ASP.NET领域的专家,他的作品深受读者喜爱。希望他的教程能对大家学习ASP.NET有所帮助。如果想要了解更多关于ASP.NET的知识,可以查看他的全部教程。如有任何疑问或建议,欢迎交流讨论。
编程语言
- 在ASP.NET 2.0中操作数据之四十四:DataList和Repeat
- AngularJS实现的鼠标拖动画矩形框示例【可兼容I
- 深入解析ES6中的promise
- SQL Server 数据页缓冲区的内存瓶颈分析
- 谈谈Vue.js——vue-resource全攻略
- jquery在启动页面时,自动加载数据的实例
- Linux服务器下利用Docker部署.net Core项目的全过程
- php获取用户真实IP和防刷机制的实例代码
- PHP网页游戏学习之Xnova(ogame)源码解读(六)
- jQuery实现固定在网页顶部的菜单效果代码
- 使用angular-cli发布i18n多国语言Angular应用
- 实现一个完整的Node.js RESTful API的示例
- Bootstrap每天必学之导航条
- VUE JS 使用组件实现双向绑定的示例代码
- vue2手机APP项目添加开屏广告或者闪屏广告
- Vue 实现前端权限控制的示例代码