基于ASP.NET的自定义分页显示
来源:互联网 作者:不详
摘要:摘要:本文针对WEB数据库记录的显示问题,用实例讨论了在ASP.NET框架下使用DataGrid控件对数据库记录的一种自定义分页显示。…
2、自定义分页技术
那么如何通过自定义的分页方法来实现快速处理大量数据的结果集呢?
它比DataGrid的默认分页方法更加快速有效,因为每次请求不需要把全部的数据结果都发送到Web服务器。相反,它只需要发送每个页面需要的那些数据集。自定义的分页方法只返回所要检索的那些结果集,如图2所示。
图2 自定义分页的传送方式
从图2中可以看到,数据库每次只需要返回所要显示的数据记录。
在ASP.NET页面中执行SQL命令的方法可以是直接执行也可以先将SQL命令封装在存储过程中,然后再页面中执行该存储过程。执行存储过程比直接执行SQL命令稍微复杂一些,但能显著提高数据库驱动的Web站点的性能。每次从ASP.NET页面直接执行SQL命令时,都需要SQL Server对其进行解析、编译和优化,而存储过程只需要进行一次解析、编译和优化。
而这里自定义的分页方法就是使用存储过程来做分页的工作,而不是由Web服务器来做。
首先,在数据库中建立一个存储过程,该存储过程接受两个输入参数,分别是要返回数据的第一条记录数和最后一条记录数。要创建一个返回指定条记录结果的存储过程,首先必须指定返回结果集的条记录数,这里用table变量(SQL Server 2000),table变量尽管是存储在内存中的,但在存储过程结束后自动释放。创建的存储过程如下:
create proc InsertStudents @Student_Last_Name as varchar(100) = null, @StartRow as int = null, @StopRow as int = null AS |
---- 建立有标识符列的table变量
declare @t_table table ( [rownum] [int] IDENTITY (1, 1) Primary key NOT NULL , [Student_Last_Name] [varchar] (40) , [Student_First_Name] [varchar] (20) , ) |
---- 在返回指定的@StopRow行数之后停止处理查询
Set RowCount @StopRow |
---- 插入到table变量中
insert @t_table ( [Student_Last_Name],[Student_First_Name] ) SELECT [Student_Last_Name],[Student_First_Name] FROM Students WHERE Student_Last_Name like '%' + @Student_Last_Name like '%' ORDER BY Student_Last_Name |