我爱Aspx >> Asp.Net >> 数据分页显示方案对于分页性能,有一个原则就是页面需要显示多少数据,我们就绐它多少数据。根据这个原则,我们可以绐出三层架构的分页解决方案。
1. 数据层
在数据层,运用分页存储过程或分页SQL查询,我们很容易可以在网上找到通用的分页存储过程,当然我们可以根据自己要的性能写出更为高效的存储过程和SQL查询语句。
概括起来,总结自定义数据分页在数据层主要包含四种方式:
1) 使用临时表――此方法被广泛使用论坛CommunityServer、博客等开源代码
2) 使用存储过程――这个方法好像最初来自CSDN上的一篇,可以到如下网址查看博客圆里的一篇文章
http://genson.cnblogs.com/archive/2006/01/17/318882.html
3) 利用SQL语句选取有限数据分页。
2. 数据访问层
在数据访问层调用存储过程或执行分页SQL查询。并在数据访问层返回集合或其它数据结构绐业务层。
一般我们在数据访问层会使用的如下数据结构到传递数据。
1) 自定义实体类
2) 数据表
3) DataSet
4) C# 2.0 泛型如List<T>其中T为自定义实体类
3. 业务层
在业务层,我们将数据访问层的数据传递绐表现层。当然数据传递的数据结构也如上面几种方法,我们可以参照MSDN上一篇文章叫《设计数据层组件并在层间传递数据》来选择合适的数据结构传递数据。
4. 表现层
其实我们在分页解决方案里最难的并不是存储过程,各层之间数据传递,这些对数据的操作是我们所熟知的。也不必费多大的劲就可以搞定这些,但在表现层就不同了,因为HTTP是无连接的协议,要在服务器上得知每个客户端正在访问第几页,将要访问第几页,每页要显示多少数据,这些需要允分了解ASP.NET的状态机制。
首先我们来看看分页时在UI层要呈现哪些东西
1) 呈现当前页的数据,这是最重要的,这些数据我们根据当前是第几页,每页显示多少条数据来查询数据库。
2) 呈现导航链接。导航链接我们根据当前页,总页数来动态的显示链接。
3) 当前页状态信息。在UI层我们可以显示总页数,当前页是第几页。当然这不是必须的。
4) 表现层的事件。在表现层当我们点击导航链接的时候,如何在服务器端捕获客户端发生的事件和客户端当前的状态并作出正确的响应。
5) 在客户端呈现的时候,我们要在客户端保存几个有用的信息,
a. 当前用户在第几页
b. 要使服务器端能从用户点击导航链接时所要的数据,即下个状态跳转到第几页。
把各层联系起来就是,在客户端所发生的分页事件在服务器端的表现层捕获后调用业务层,业务层再调用数据访问层,数据访问层再调用数据层以获取数据,层间传递的数据结构可选择。
现在来看看ASP.NET 2.0几种常见的三层分页解决方案
1) GridView +ObjectDataSource
ASP.NET2.0提供了SqlDataSource数据源控件,支持用于指定连接字符串、SQL 语句或存储过程的属性,用以查询或修改数据库。但是,SqlDataSource 控件存在一个问题:该控件的缺点在于它迫使您将用户界面层与业务逻辑层混合在一起。然而随着应用程序规模的扩大,您会越来越感觉到混合多个层的做法是不可取的。 生成严格意义上的多层 Web 应用程序时,您应该具有清晰的用户界面层、业务逻辑层和数据访问层。仅仅由于 SqlDataSource 控件的强制而在用户界面层引用 SQL 语句或存储过程是不可取的。
Ҷƪл˵?
数据库设计中使用设计模式[03-18]
数据仓库的逻辑结构和物理结构及..[03-18]
对象数据库与关系数据库利弊谈[03-18]
数据存储指南 存储备份技术详解[03-18]
分析:面向Web的数据挖掘面临3大..[03-18]
分析:移动数据库基本原理及其前..[03-18]
数据库远程复制和异地容灾方案相..[03-18]
Sqlite数据库在Media NAS系统的应..[03-18]
数据库系统优化,高性能sql语句[03-18]
教你使用Oracle数据库实现实时通..[03-18]
ASP.NET 2.0 正式版中无刷新页面..[04-21]
c#学习体会:使用 ref 和 out 传递..[04-21]
c#中使用ref和out一点认识[04-21]
Ajax在.NET中与Server控件的交互[04-21]
5色六彩教了我一招[04-21]
见证七夕-愿天下有情人·终成眷属[04-21]
体验ASP.NET 2.0新特性[04-21]
FCKeditor.net[04-21]
收集几个所见即所得在线编辑器[04-21]
NET Framework部署的性能调整[04-21]