zoukankan      html  css  js  c++  java
  • AspNetPager

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

      Code
      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事件

      Code
      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);

    PROC
      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(@tbname) IS 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

  • 相关阅读:
    7月的尾巴,你是XXX
    戏说Android view 工作流程《下》
    “燕子”
    Android开机动画bootanimation.zip
    戏说Android view 工作流程《上》
    ViewController里已连接的IBOutlet为什么会是nil
    My first App "Encrypt Wheel" is Ready to Download!
    iOS开发中角色Role所产生的悲剧(未完)
    UIScrollView实现不全屏分页的小技巧
    Apple misunderstood my app,now my app status changed to “In Review”
  • 原文地址:https://www.cnblogs.com/HughTan/p/1778737.html
Copyright © 2011-2022 走看看