zoukankan      html  css  js  c++  java
  • AspNetPager分页+URL重写

    web.config配置文件中url重写规则:

     <RewriterRule>
            <LookFor>~/NewsList_([0-9]*).html</LookFor>
            <SendTo><![CDATA[~/NewsList.aspx?page=$1]]></SendTo>
    </RewriterRule>

     NewsList.aspx:

      <webdiyer:AspNetPager ID="AspNetPager1" runat="server" OnPageChanged="AspNetPager1_PageChanged"
                                PageSize="10" AlwaysShow="true" CssClass="anpager" CurrentPageButtonClass="cpb" ShowPageIndexBox="never"
                                FirstPageText="首页" LastPageText="尾页" NextPageText="后页" PrevPageText="前页" EnableUrlRewriting="true" UrlRewritePattern="./NewsList_{0}.html">
                            </webdiyer:AspNetPager>

    NewsList.aspx.cs:

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {         
                BindPagedData();
            }
        }

       void BindPagedData()
        {      
            procAllTablesPage _patp = new procAllTablesPage();
            DataSet ds = _patp.Query("news", "*", "id", AspNetPager1.PageSize, 1, 0, 1, " and status<>0");
            AspNetPager1.RecordCount = int.Parse(ds.Tables[1].Rows[0][0].ToString());
            rptNewsList.DataSource = ds;
            rptNewsList.DataBind();
        }

    分页存储过程:

    CREATE  PROCEDURE [dbo].[procAllTablesPage]
    @tblName varchar(255), -- 表名
    @strGetFields nvarchar(1000) = "*", -- 需要返回的列
    @fldName varchar(255)='', -- 排序的字段名
    @PageSize int = 10, -- 页尺寸
    @PageIndex int = 1, -- 页码
    @doCount bit = 0, -- 返回, 非0 值则返回记录总数
    @OrderType bit = 0, -- 设置排序类型, 非0 值则降序
    @strWhere varchar(1500) = '' -- 查询条件(注意: 不要加where)
    AS
    declare @strSQL varchar(5000) -- 主语句
    declare @strTmp varchar(110) -- 临时变量
    declare @strOrder varchar(400) -- 排序类型

    if @doCount != 0
    begin
       if @strWhere !=''
        set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 '+ @strWhere
       else
        set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
    end --以上代码的意思是如果@doCount传递过来的不是,就执行总数统计。以下的所有代码都是@doCount为0的情况:
    else
    begin
       if @OrderType != 0--降序
       begin
        set @strTmp = '<(select min'
        set @strOrder = ' order by [' + @fldName +'] desc'--如果@OrderType不是0,就执行降序,这句很重要!
       end
       else
       begin
        set @strTmp = '>(select max'
        set @strOrder = ' order by [' + @fldName +'] asc'
       end
       if @PageIndex = 1
       begin
        if @strWhere != ''
         set @strSQL = 'select top ' + str(@PageSize) +' ' + @strGetFields + ' from [' + @tblName + '] where 1=1 ' + @strWhere + ' ' + @strOrder
        else
         set @strSQL = 'select top ' + str(@PageSize) +' ' + @strGetFields + ' from [' + @tblName + '] ' + @strOrder--如果是第一页就执行以上代码,这样会加快执行速度
       end
       else
       begin--以下代码赋予了@strSQL以真正执行的SQL代码
        set @strSQL = 'select top ' + str(@PageSize) + ' ' + @strGetFields + ' from ['   + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)' + @strOrder
        if @strWhere != ''
         set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' [' + @fldName + '] from [' + @tblName + '] where 1=1 ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and 1=1 ' + @strWhere + ' ' + @strOrder
       end
       if @strWhere !=''            --得到记录的总行数
        set @strSQL =@strSQL+ '; select count(*) as Total from [' + @tblName + '] where 1=1 '+ @strWhere
       else
        set @strSQL =@strSQL+ '; select count(*) as Total from [' + @tblName + ']'
    end
    exec (@strSQL)
    RETURN
    GO

  • 相关阅读:
    浏览器内置对象及其方法
    Leetcode | Path Sum I && II
    Leetcode | 3Sum
    算法分析之渐近符号
    Leetcode | Two Sum
    Leetcode | Wildcard Matching
    LeetCode | Regular Expression Matching
    Leetcode | Subsets I & II
    Leetcode | Populating Next Right Pointers in Each Node I & II
    爱是恒久忍耐,又有恩慈
  • 原文地址:https://www.cnblogs.com/gdjlc/p/2086949.html
Copyright © 2011-2022 走看看