天涯之外

导航

AspNetPager 用法

  1. 添加引用AspNetPager.dll
  2. 工具箱中添加"选择项"-.Net Framework组件-AspNetPager
  3. 页面中添加AspNetPager控件

    1<webdiyer:AspNetPager ID="AspNetPager1" runat="server" 
    2AlwaysShow="True" //总是显示分页控件,即使要分页的数据只有一页 
    3  OnPageChanged="AspNetPager1_PageChanged"  //分页发生改变时触发事件
    4UrlPaging="true"  //通过URL传递分页信息的方式来分页。如果设为true,禁用ViewState也能达到效果。如果设置为false,禁用了viewstate则无法实现分页. 
    5NumericButtonTextFormatString="[{0}]" //页索引数字显示的格式
    6 ShowCustomInfoSection="Left">   //显示当前页和总页数信息,默认值不显示,为left则将显示在页索引前,为right则为页索引后            </webdiyer:AspNetPager>
  4. 初始化页面,添加ChangePage事件

     1 protected void Page_Load(object sender, EventArgs e)
     2     {
     3         .
     4         .
     5         .
     6         BindData();//数据绑定
     7          .
     8         .
     9         .
    10       }
                    
    11
    12//翻页事件
    13     protected void ChangePage(object src, PageChangedEventArgs e)
    14     {
    15         pager1.CurrentPageIndex = e.NewPageIndex;
    16         BindData();
    17     }
        

//此处为调用分页存储过程
DataSet ds = DbUtility.QueryPagerData("jc_Province""Id", pageIndex, PageSize, "", OrderBy, Where, out ItemCount, out PageCount);

base.DataBind(pageIndex);


  1CREATE PROC sp_PageView
  2 @tbname     sysname,               --要分页显示的表名
  3 @FieldKey   nvarchar(1000),      --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段
  4 @PageCurrent int=1,               --要显示的页码
  5 @PageSize   int=10,                --每页的大小(记录数)
  6 @FieldShow nvarchar(1000)='',      --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段
  7 @FieldOrder nvarchar(1000)='',      --以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC,用于指定排序顺序
  8 @Where    nvarchar(1000)='',     --查询条件
  9 @ItemCount int OUTPUT,
 10 @PageCount int OUTPUT             --总页数
 11 AS
 12 SET NOCOUNT ON
 13 --检查对象是否有效
 14 IF OBJECT_ID(@tbnameIS NULL
 15 BEGIN
 16     RAISERROR(N'对象"%s"不存在',1,16,@tbname)
 17     RETURN
 18 END
 19 IF OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTable')=0
 20     AND OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsView')=0
 21     AND OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTableFunction')=0
 22 BEGIN
 23     RAISERROR(N'"%s"不是表、视图或者表值函数',1,16,@tbname)
 24     RETURN
 25 END
 26 --分页字段检查
 27 IF ISNULL(@FieldKey,N'')=''
 28 BEGIN
 29     RAISERROR(N'分页处理需要主键(或者惟一键)',1,16)
 30     RETURN
 31 END
 32 --其他参数检查及规范
 33 IF ISNULL(@PageCurrent,0)<1 SET @PageCurrent=1
 34 IF ISNULL(@PageSize,0)<1 SET @PageSize=10
 35 IF ISNULL(@FieldShow,N'')=N'' SET @FieldShow=N'*'
 36 IF ISNULL(@FieldOrder,N'')=N''
 37     SET @FieldOrder=N''
 38 ELSE
 39     SET @FieldOrder=N'ORDER BY '+LTRIM(@FieldOrder)
 40 IF ISNULL(@Where,N'')=N''
 41     SET @Where=N''
 42 ELSE
 43     SET @Where=N'WHERE ('+@Where+N')'
 44 --如果@PageCount为NULL值,则计算总页数(这样设计可以只在第一次计算总页数,以后调用时,把总页数传回给存储过程,避免再次计算总页数,对于不想计算总页数的处理而言,可以给@PageCount赋值)
 45 
 46     DECLARE @sql nvarchar(4000)
 47     SET @sql=N'SELECT @ItemCount=COUNT(*)'
 48         +N' FROM '+@tbname
 49         +N' '+@Where
 50     EXEC sp_executesql @sql,N'@ItemCount int OUTPUT',@ItemCount OUTPUT
 51     SET @PageCount=(@ItemCount+@PageSize-1)/@PageSize
 52 
 53 print @PageCount
 54 print @ItemCount
 55 --计算分页显示的TOPN值
 56 DECLARE @TopN varchar(20),@TopN1 varchar(20)
 57 SELECT @TopN=@PageSize,
 58     @TopN1=(@PageCurrent-1)*@PageSize
 59 --第一页直接显示
 60 IF @PageCurrent=1
 61     EXEC(N'SELECT TOP '+@TopN
 62         +N' '+@FieldShow
 63         +N' FROM '+@tbname
 64         +N' '+@Where
 65         +N' '+@FieldOrder)
 66 ELSE
 67 BEGIN
 68     --处理别名
 69     IF @FieldShow=N'*'
 70         SET @FieldShow=N'a.*'
 71     --生成主键(惟一键)处理条件
 72     DECLARE @Where1 nvarchar(4000),@Where2 nvarchar(4000),
 73         @s nvarchar(1000),@Field sysname
 74     SELECT @Where1=N'',@Where2=N'',@s=@FieldKey
 75     WHILE CHARINDEX(N',',@s)>0
 76         SELECT @Field=LEFT(@s,CHARINDEX(N',',@s)-1),
 77             @s=STUFF(@s,1,CHARINDEX(N',',@s),N''),
 78             @Where1=@Where1+N' AND a.'+@Field+N'=b.'+@Field,
 79             @Where2=@Where2+N' AND b.'+@Field+N' IS NULL',
 80             --@Where=REPLACE(@Where,@Field,N'a.'+@Field),
 81             @FieldOrder=REPLACE(@FieldOrder,@Field,N'a.'+@Field),
 82             @FieldShow=REPLACE(@FieldShow,@Field,N'a.'+@Field)
 83     SELECT --@Where=REPLACE(@Where,@s,N'a.'+@s),
 84        @FieldOrder=REPLACE(@FieldOrder,@s,N'a.'+@s),
 85        @FieldShow=REPLACE(@FieldShow,@s,N'a.'+@s),
 86         @Where1=STUFF(@Where1+N' AND a.'+@s+N'=b.'+@s,1,5,N''),    
 87        @Where2=CASE
 88            WHEN @Where='' THEN N'WHERE ('
 89            ELSE @Where+N' AND ('
 90            END+N'b.'+@s+N' IS NULL'+@Where2+N')'
 91    DECLARE @QUERYSTRING varchar(2000)
 92    SET @QUERYSTRING =     N'SELECT TOP '+@TopN
 93        +N' '+@FieldShow
 94        +N' FROM '+@tbname
 95        +N' a LEFT JOIN(SELECT TOP '+@TopN1
 96        +N' '+@FieldKey
 97        +N' FROM '+@tbname
 98        +N' a '+@Where
 99        +N' '+@FieldOrder
100        +N')b ON '+@Where1
101        +N' '+@Where2
102        +N' '+@FieldOrder
103    PRINT @QUERYSTRING    
104    --执行查询
105    EXEC(@QUERYSTRING)
106
107
108END
109GO
110

posted on 2009-02-19 23:28  天涯之外  阅读(452)  评论(0编辑  收藏  举报