搞过web编程的人十有八九都遇到过分页问题,(本人是Windows平台的忠实用户,所以只讨论Windows平台),asp时代的就不说,先讨论asp.net2.0的解决方案,常用的方案有以下两种:
1. 基于界面层的分页方案。Asp.net的很多数据显示控件提供了分页功能,其原理是每次都从数据库取得所有目标数据,然后在控件内部进行分页,再将目标页面数据显示,代表控件是GridView。此方案的优点是使用简便,无须写额外代码;缺点是巨费资源且效率低下,相信使用的人甚少。
2.基于中间层/数据层的分页方案。Asp.net2.0的典型架构就是ObjectDataSource配合数据层代码来实现,当然SqlDataSource也能实现,不过,据我猜测,基于现今流行的逻辑分层的原则来说,应该是ObjectDataSource会使用得更加广泛。 不过,在这个方案当中,ObjectDataSource也不是最为关键的环节,数据层的分页才是真正的主角。 让我们把目光转移到数据层上来,这里又可以分出两个流派,一是DB(在DB如SQL Server里面写分页存储过程), 二是在数据层编写SQL脚本。
除了这两种方案,当然还有别的方案,在此不多加讨论。本文焦点在于讨论第二种方案,其中又着重讨论该方案中第二个流派(即数据层编写sql脚本)的实现。为什么不讨论第一个流派的实现呢,这是因为现今关于分页存储过程的资料已经很多了。。。(未完,待续)
1. 基于界面层的分页方案。Asp.net的很多数据显示控件提供了分页功能,其原理是每次都从数据库取得所有目标数据,然后在控件内部进行分页,再将目标页面数据显示,代表控件是GridView。此方案的优点是使用简便,无须写额外代码;缺点是巨费资源且效率低下,相信使用的人甚少。
2.基于中间层/数据层的分页方案。Asp.net2.0的典型架构就是ObjectDataSource配合数据层代码来实现,当然SqlDataSource也能实现,不过,据我猜测,基于现今流行的逻辑分层的原则来说,应该是ObjectDataSource会使用得更加广泛。 不过,在这个方案当中,ObjectDataSource也不是最为关键的环节,数据层的分页才是真正的主角。 让我们把目光转移到数据层上来,这里又可以分出两个流派,一是DB(在DB如SQL Server里面写分页存储过程), 二是在数据层编写SQL脚本。
除了这两种方案,当然还有别的方案,在此不多加讨论。本文焦点在于讨论第二种方案,其中又着重讨论该方案中第二个流派(即数据层编写sql脚本)的实现。为什么不讨论第一个流派的实现呢,这是因为现今关于分页存储过程的资料已经很多了。。。(未完,待续)
浙公网安备 33010602011771号