.Net通用分页类 存储过程分页版

CODE:

using System;
using System.Collections.Generic;
using System.Text;

/**//// <summary>
/// .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
/// 作者:启程 www.letwego.cn
/// 可用于任意用途,请保留作者信息,谢谢!
/// </summary>
namespace letwego.cn
{
    public class PageStore
    {
        初始构造#region 初始构造
        //PageStore()
        //{

        //}
        #endregion

        字段#region 字段

        /**//// <summary>
        /// 每页记录数
        /// </summary>
        private int _PageSize = 20;

        /**//// <summary>
        /// 需要获取第几页的数据,从 1 开始
        /// </summary>
        private int _PageIndex = 1;

        /**//// <summary>
        /// 总页数
        /// </summary>
        private int _PageCounts = 0;

        /**//// <summary>
        /// 总记录数
        /// </summary>
        private int _Counts = 0;

        /**//// <summary>
        /// 首页 显示样式
        /// </summary>
        private string _FirstStr = "";

        /**//// <summary>
        /// 上一页 显示样式
        /// </summary>
        private string _PrevStr = "";

        /**//// <summary>
        /// 下一页 显示样式
        /// </summary>
        private string _NextStr = "";

        /**//// <summary>
        /// 尾页 显示样式
        /// </summary>
        private string _LastStr = "";

        /**//// <summary>
        /// 跳转 的url链接
        /// </summary>
        private string _TurnUrlStr = "";

        /**//// <summary>
        /// 跳转的url链接的参数前面不要加问号和与号
        /// </summary>
        private string _Options = "";

        private string strCountww = "";  //共N条信息
        private string strPageww = "";    //第N页/共N页   
        private string strTurnww;  //跳转控件

        #endregion

        属性#region 属性
        /**//// <summary>
        /// 每页记录数
        /// </summary>
        public int PageSize
        {
            get { return _PageSize; }
            set { _PageSize = value; }
        }

        /**//// <summary>
        /// 需要获取第几页的数据,从 1 开始
        /// </summary>
        public int PageIndex
        {
            get { return _PageIndex; }
            set { _PageIndex = value; }
        }

        /**//// <summary>
        /// 总页数
        /// </summary>
        public int PageCounts
        {
            get { return _PageCounts; }
        }

        /**//// <summary>
        /// 总记录数
        /// </summary>
        public int Counts
        {
            get { return _Counts; }
            set { _Counts = value; }
        }

        /**//// <summary>
        /// 首页 显示样式
        /// </summary>
        public string FirstStr
        {
            get { return _FirstStr; }
            set { _FirstStr = value; }
        }

        /**//// <summary>
        /// 上一页 显示样式
        /// </summary>
        public string PrevStr
        {
            get { return _PrevStr; }
            set { _PrevStr = value; }
        }

        /**//// <summary>
        /// 下一页 显示样式
        /// </summary>
        public string NextStr
        {
            get { return _NextStr; }
            set { _NextStr = value; }
        }

        /**//// <summary>
        /// 尾页 显示样式
        /// </summary>
        public string LastStr
        {
            get { return _LastStr; }
            set { _LastStr = value; }
        }

        /**//// <summary>
        /// 跳转 的url链接
        /// </summary>
        public string TurnUrlStr
        {
            get { return _TurnUrlStr; }
            set { _TurnUrlStr = value; }
        }

        /**//// <summary>
        /// 跳转的url链接的参数前面不要加问号和与号
        /// </summary>
        public string Options
        {
            get { return _Options; }
            set { _Options = value; }
        }

        #endregion

        返回分页后的页码显示#region 返回分页后的页码显示
        /**//// <summary>
        /// 返回分页后的页码显示
        /// </summary>
        /// <param name="bolCount">是否显示 共N条信息</param>
        /// <param name="bolPage">是否显示 第N页/共N页</param>
        /// <param name="bolFirst">是否显示 首页</param>
        /// <param name="bolLast">是否显示 尾页</param>
        /// <param name="bolTurn">是否显示 跳转控件</param>
        /// <param name="IsChinese">是否 用中文显示</param>
        /// <param name="intStyle">样式选择</param>
        /// <param name="intShowNum">每页显示多少个数字</param>
        /// <returns>返回分页后的页码显示</returns>
        public string GetShowPageStr(bool bolCount, bool bolPage, bool bolFirst, bool bolLast, bool bolTurn, bool IsChinese, int intStyle, int intShowNum)
        {
            string strPageShowww = "";
            string _FirstStr2 = "";
            string _PrevStr2 = "";
            string _NextStr2 = "";
            string _LastStr2 = "";

            公共处理#region 公共处理
            //总页数
            _PageCounts = (_Counts + _PageSize - 1) / _PageSize;

            //超出最小页码
            if (_PageIndex < 1)
            {
                _PageIndex = 1;
            }

            //超出最大页码
            if (_PageIndex > _PageCounts)
            {
                _PageIndex = _PageCounts;
            }

            if (IsChinese)//中文分页
            {
                //跳转
                strTurnww = "<input value='" + _PageIndex.ToString() + "' id='txtPageGo' name='txtPageGo' type='text' style='width:35px;'><input name='btnGo' type='button' id='btnGo' value='跳转' onclick=""javascript:window.location.href='" + _TurnUrlStr + "?Page=' + document.getElementById('txtPageGo').value + '" + "&" + Options + "'"">";
                //共N条信息
                strCountww = "共 " + _Counts.ToString() + " 条信息";
                //第N页/共N页
                strPageww = "第" + _PageIndex.ToString() + "页/共" + _PageCounts.ToString() + "页";

                //处理页码显示样式
                if (intStyle == 1)
                {
                    if (_FirstStr == "")
                    {
                        _FirstStr = "首页";
                    }
                    if (_PrevStr == "")
                    {
                        _PrevStr = "上一页";
                    }
                    if (_NextStr == "")
                    {
                        _NextStr = "下一页";
                    }
                    if (_LastStr == "")
                    {
                        _LastStr = "尾页";
                    }
                }
                else
                {
                    if (_FirstStr == "")
                    {
                        _FirstStr = " << ";
                    }
                    if (_PrevStr == "")
                    {
                        _PrevStr = " < ";
                    }
                    if (_NextStr == "")
                    {
                        _NextStr = " > ";
                    }
                    if (_LastStr == "")
                    {
                        _LastStr = " >> ";
                    }
                }
            }
            else//英文文分页
            {
                //跳转
                strTurnww = "<input value='" + _PageIndex.ToString() + "' id='txtPageGo' name='txtPageGo' type='text' style='width:35px;'><input name='btnGo' type='button' id='btnGo' value='Goto' onclick=""javascript:window.location.href='" + _TurnUrlStr + "?Page=' + document.getElementById('txtPageGo').value + '" + "&" + Options + "'"">";
                //共N条信息
                strCountww = "Total " + _Counts.ToString() + " Infos";
                //第N页/共N页
                strPageww = " " + _PageIndex.ToString() + "/" + _PageCounts.ToString() + " ";

                //处理页码显示样式
                if (intStyle == 1)
                {
                    if (_FirstStr == "")
                    {
                        _FirstStr = " First ";
                    }
                    if (_PrevStr == "")
                    {
                        _PrevStr = " Previous ";
                    }
                    if (_NextStr == "")
                    {
                        _NextStr = " Next ";
                    }
                    if (_LastStr == "")
                    {
                        _LastStr = " Last ";
                    }
                }
                else
                {
                    if (_FirstStr == "")
                    {
                        _FirstStr = " << ";
                    }
                    if (_PrevStr == "")
                    {
                        _PrevStr = " < ";
                    }
                    if (_NextStr == "")
                    {
                        _NextStr = " > ";
                    }
                    if (_LastStr == "")
                    {
                        _LastStr = " >> ";
                    }
                }
            }
            #endregion
           
            //没有记录
            if (_Counts <= 0)
            {
                strPageShowww = strCountww;
            }
            //有记录
            else
            {
                //只有一页
                if (_PageCounts <= 1)
                {
                    strPageShowww = strCountww + "  " + strPageww;
                }
                //不止一页
                else
                {
                    页码链接处理#region 页码链接处理
                    //第一页
                    if (_PageIndex == 1)
                    {
                        _FirstStr2 = _FirstStr;
                        _PrevStr2 = _PrevStr;
                    }
                    else
                    {
                        _FirstStr2 = "<a href=""" + _TurnUrlStr + "?Page=1" + "&" + _Options + """>" + _FirstStr + "</a>";
                        _PrevStr2 = "<a href=""" + _TurnUrlStr + "?Page=" + Convert.ToString(_PageIndex - 1) + "&" + _Options + """>" + _PrevStr + "</a>";
                    }

                    //最后一页
                    if (_PageIndex == _PageCounts)
                    {
                        _NextStr2 = _NextStr;
                        _LastStr2 = _LastStr;
                    }
                    else
                    {
                        _NextStr2 = "<a href=""" + _TurnUrlStr + "?Page=" + Convert.ToString(_PageIndex + 1) + "&" + _Options + """>" + _NextStr + "</a>";
                        _LastStr2 = "<a href=""" + _TurnUrlStr + "?Page=" + _PageCounts + "&" + _Options + """>" + _LastStr + "</a>";
                    }

                    //----处理显示页码-----------
                    if (bolCount == true)//共N条信息
                    {
                        strPageShowww = strPageShowww + "  " + strCountww;
                    }
                    if (bolPage == true)//第N页/共N页
                    {
                        strPageShowww = strPageShowww + "  " + strPageww;
                    }
                    if (bolFirst == true) //首页
                    {
                        strPageShowww = strPageShowww + "  " + _FirstStr2;
                    }
                    strPageShowww = strPageShowww + "{0}";//上一页
                    strPageShowww = strPageShowww + "{1}{2}";//下一页

                    if (bolLast == true)//尾页
                    {
                        strPageShowww = strPageShowww + "  " + _LastStr2;
                    }
                    if (bolTurn == true)//跳转控件
                    {
                        strPageShowww = strPageShowww + "  " + strTurnww;
                    }

                    #endregion

                    样式一: 共X条信息 第N页/共M页 首页 上一页 下一页 尾页  跳转#region 样式一: 共X条信息 第N页/共M页 首页 上一页 下一页 尾页  跳转
                    if (intStyle == 1)
                    {
                        strPageShowww = strPageShowww.Replace("{0}", "  " + _PrevStr2);//上一页
                        strPageShowww = strPageShowww.Replace("{1}", "  " + _NextStr2);//下一页
                        strPageShowww = strPageShowww.Replace("{2}", "");//
                    }
                    #endregion

                    样式二: 共X条信息 第N页/共M页 首页 1 2 3 尾页 跳转#region 样式二: 共X条信息 第N页/共M页 首页 1 2 3 尾页 跳转

                    if (intStyle == 2)
                    {
                        int PageTemp = 0;
                        string strPageNum = "";
                        string strTempNow = "";

                        //当页码超过最后一批该显示
                        if (_PageIndex > _PageCounts - intShowNum + 1)
                        {
                            PageTemp = _PageCounts < intShowNum ? 0 : _PageCounts - intShowNum;
                            for (int i = 1; i <= intShowNum; i++)
                            {
                                if (i > _PageCounts) break;

                                strTempNow = Convert.ToString(PageTemp + i);

                                //当前页不显示超链接
                                if( PageIndex == PageTemp + i)
                                {
                                    strPageNum = strPageNum + "<b>" + strTempNow + "</b> ";
                                }
                                else
                                {
                                    strPageNum = strPageNum + "<a href=""" + _TurnUrlStr + "?Page=" + strTempNow + "&" + _Options + """>" + strTempNow + "</a> ";
                                }
                            }
                        }
                        else
                        {
                            for (int i = 0; i < intShowNum; i++)
                            {
                                strTempNow = Convert.ToString(PageIndex + i);

                                //当前页不显示超链接
                                if (i == 0)
                                {
                                    strPageNum = strPageNum + "<b>" + strTempNow + "</b> ";
                                }
                                else
                                {
                                    strPageNum = strPageNum + "<a href=""" + _TurnUrlStr + "?Page=" + strTempNow + "&" + _Options + """>" + strTempNow + "</a> ";
                                }
                            }
                        }

                        //
                        strPageShowww = strPageShowww.Replace("{0}", "  " + _PrevStr2);//上一页
                        strPageShowww = strPageShowww.Replace("{1}", "  " + strPageNum);//显示数字
                        strPageShowww = strPageShowww.Replace("{2}", "  " + _NextStr2);//下一页
                    }
                    #endregion
                }
            }

         

            return strPageShowww;
        }
        #endregion
    }

    调用实例#region 调用实例
    /**//*
    protected void BindData()
    {
        int MyPage;
        string strPage = Request["page"];
        if (strPage == null || strPage == "")
        {
            MyPage = 1;
        }
        else
        {
            MyPage = Convert.ToInt32(strPage);
        }

        PageStore MyPageStore = new PageStore();
        MyPageStore.Counts = 100;//总记录数
        MyPageStore.PageIndex = MyPage;//当前要显示的页码
        MyPageStore.PageSize = 2;//每页显示记录数
        MyPageStore.TurnUrlStr = "WebPageStore.aspx";//要跳转的页面(当前页)
        MyPageStore.Options = "Options=List";//页面所带参数

        this.Label1.Text = MyPageStore.GetShowPageStr(true, true, true, true, true, true, 2, 4);
    }
    */
    #endregion

    简要说明#region 简要说明
    /**//*
    .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择).
    大概思路是:主要是利用存储过程在数据库进行分页,
    所以在这个类里面不涉及到数据的处理,只进行页码的显示格式处理,
    配合SQL2005 的 ROW_NUMBER () 功能,能够达到更好的效果.
    目前一共4种样式,4种样式里还可以设置参数,把页码显示调整到最简,只剩下 上一页 下一页,
    且 上一页 下一页 等文字可以自定义,用图片也可以,只是要把字符串拼成图片的Html
    效果图:https://images.cnblogs.com/cnblogs_com/84ww/128905/r_PageStore.gif
    */
    #endregion

    附 存储过程例子#region 附 存储过程例子
    /**//*
    CREATE PROCEDURE dbo.sp_userinfoList

        @strOptions varchar(200) = NULL,
        @PageSize int = 20,
        @PageIndex int = 1,
        @Counts int = 0 OUTPUT

    AS

    SET NOCOUNT ON
    SET ANSI_WARNINGS OFF

    DECLARE @PageUp int
    DECLARE @PageDown int   
   
    --处理页大小
    IF @PageSize = -1 SET @PageSize = 20

    --获得总记录数
    SELECT @Counts = COUNT(1) FROM userinfo

    --当前页的第一条记录RowID
    SET @PageDown = @PageSize * @PageIndex + 1

    --当前页的最后一条记录RowID
    SET @PageUp = @PageSize * (@PageIndex + 1)

    --  信息列表 
    IF @strOptions='LIST' BEGIN

        SELECT
            id,
            user,
            password,
            datetime,
            content
        FROM

        (
            SELECT * ,
            PageTableRowID = ROW_NUMBER () OVER (ORDER BY id DESC)
            FROM userinfo
        ) AS PageTableList
        WHERE PageTableRowID BETWEEN @PageDown AND @PageUp
    END
    */
    #endregion
}

时间: 2024-10-26 20:04:59

.Net通用分页类 存储过程分页版的相关文章

ASP通用分页类

分页 一.类的属性.方法 这是一个ASP通用分页类.你可以用它方便的给记录集分页,当然在网上有许多的分页类和分页函数.本分页主要有GetConn.GetRS.SQL.URL.CSSFile.FldName.FldNote.FldWidth.FldAlign.ShowPageType.TleFTColor.TleWidth.PageSize.ShowWidth.Init.Pages.ShowData.Close等属性和方法. 1.GetConn属性:用来获取一个已创建的Connection对象.

通用分页的存储过程函数

存储过程|分页|函数|存储过程|分页|函数 ALTER PROCEDURE Pagination( @tblName  varchar(255),   -- 表名 @strGetFields varchar(1000) = '*', -- 需要返回的列  @fldName  varchar(255)='',  -- 排序的字段名 @PageSize  int = 10,    -- 页尺寸 @PageIndex  int = 1,    -- 页码 @doCount  bit = 0,    -

五 分页类

分页 <?php//// +----------------------------------------------------------------------+// | 分页类                                                               |// +----------------------------------------------------------------------+// | Copyright (c)

php分页类

<?php//// +----------------------------------------------------------------------+// | 分页类  |// +----------------------------------------------------------------------+// | Copyright (c) 2001 NetFish Software |// | |// | Author: whxbb(whxbbh@21cn.com

ZendFramework中的分页类实现

参考自:http://www.phpfans.net/ask/question2/7822122562.html 其实上文写得比较清楚了,我这也只是把上面的方法推广一下而已. 主要是分页类的实现. 如上图文件结构所示,在library目录下新建Custom模块.各个文件的代码依次是: Mysql.php 1.<?php2.require_once 'Zend/Db/Adapter/Pdo/Mysql.php';3.4.class Custom_Db_Adapter_Pdo_Mysql exten

Pear::Pager分页类简介

Pear的Pager分页类是一个很好用的php分页类,扩展性很强,能够适应各种分页情况的需求,至少我在几年间大大小小的项目里,基本上没有为分页额外写过代码,全部都是用的Pager,足见Pager的可用性之强.下面用代码来看看它的使用范例: 例子1 <?php require_once 'Pager/Pager.php'; $params = array( 'mode' => 'Jumping', 'perPage' => 3, 'delta' => 2, 'itemData' =&

PHP实现简单实用的分页类代码_php技巧

本文实例讲述了PHP实现简单实用的分页类.分享给大家供大家参考,具体如下: <?php class Page { private $total; //总记录 private $pagesize; //每页显示多少条 private $limit; //limit private $page; //当前页码 private $pagenum; //总页码 private $url; //地址 private $bothnum; //两边保持数字分页的量 //构造方法初始化 public funct

分享一个取自HoverTree项目的.NET分页类_实用技巧

这是一个实际应用中的类,代码出自HoverTree项目,适用与.NET平台,一般在ASP.NET中使用.效果可以在HoverTree官网看到. /* 在HoverTree CMS项目中使用 * 可以用于ASP.NET分页 */ namespace HoverTree.Framework.WebUI { public class KeleyiPager { public static string BuildPageIndex(int pageIndex, int totalPageCount)

PHP实现的简单分页类及用法示例_php技巧

本文实例讲述了PHP实现的简单分页类及用法.分享给大家供大家参考,具体如下: <?php /* * 使用: * $page = new Page(连接符,查询语句,当前页码,每页大小,页码符) * 连接符:一个MYSQL连接标识符,如果该参数留空,则使用最近一个连接 * 查询语句:SQL语句 * 当前页码:指定当前是第几页 * 每页大小:每页显示的记录数 * 页码符:指定当前页面URL格式 * * 使用例子: * $sql = "select * from aa"; * $pag