要做一个GridView分页的应用,可以前用惯了Sql2005的CET,现在开发的项目用的却是Sql2000。CET用不了了只好写了一个临时表的存储过程。用存储过程实现GridView分页效果总体分为两大块:一个是存储过程,另一个就是自定义的按钮控件。下面是详细代码。
第一 存储过程
  存储过程1:从数据库取得要查询记录的总条数    
 

GridView自定义分页存储过程CREATE procedure P_PageSP_TotalNum
GridView自定义分页存储过程    
@Sql varchar(2000),
GridView自定义分页存储过程    
@FilterStr varchar(500)
GridView自定义分页存储过程
GridView自定义分页存储过程
as
GridView自定义分页存储过程
GridView自定义分页存储过程
declare @Str varchar(2000)
GridView自定义分页存储过程
set @Str ='
GridView自定义分页存储过程declare @indextable table(id int identity(1,1),nid int);
GridView自定义分页存储过程insert into @indextable(nid) select [ID] from  (
' + @Sql + ' ' + @FilterStr + ') as a  ;
GridView自定义分页存储过程select count(*) from @indextable
'
GridView自定义分页存储过程
GridView自定义分页存储过程
exec(@Str)
GridView自定义分页存储过程
GO
GridView自定义分页存储过程
    存储过程2:按页取数据
CREATE procedure P_PageSP
    
@Lower varchar(4),        --要查询的下限
    @Upper varchar(4),        --要查询的上限
    @TableName varchar(100),     --查询的表名
    @OrderBy varchar(200),        --排序条件
    @FilterStr varchar(1000),        --过滤条件
    @Sql varchar(2000)        --查询语句

AS

declare @Str varchar(2000)

set @Str ='
declare @indextable table(id int identity(1,1),nid int);
insert into @indextable(nid) select [ID] from  (
' + @Sql + ' ' + @FilterStr + ') as a  '  + @OrderBy  + ' ;
' + @Sql + ' inner join @indextable t on t.nid='+ @TableName +'.ID 
where t.id > 
' + @Lower + ' and t.id <= ' + @Upper + ' ' 
exec(@Str)
GO

第二 自定义按钮控件
    aspx代码
    CS代码
}


第三 应用
   把自定义控件拖到用于分页的GridView页面上,属性栏设置GridView的各个属性(都有详细的属性说明)。页面CS代码需要绑定GridView的地方调用自定义控件的BindGridView()方法绑定数据(如果是查询页面调用方法之前应先设置控件的FilterStr属性)。

   点击下载 

相关文章: