当前位置: 首页 > news >正文

.Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)

 

 

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='跳转' οnclick=\"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' οnclick=\"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 + "&nbsp;&nbsp;" + 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 + "&nbsp;&nbsp;" + strCountww;
                    }

                    
if (bolPage == true)//第N页/共N页
                    {
                        strPageShowww 
= strPageShowww + "&nbsp;&nbsp;" + strPageww;
                    }

                    
if (bolFirst == true//首页
                    {
                        strPageShowww 
= strPageShowww + "&nbsp;&nbsp;" + _FirstStr2;
                    }

                    strPageShowww 
= strPageShowww + "{0}";//上一页
                    strPageShowww = strPageShowww + "{1}{2}";//下一页

                    
if (bolLast == true)//尾页
                    {
                        strPageShowww 
= strPageShowww + "&nbsp;&nbsp;" + _LastStr2;
                    }

                    
if (bolTurn == true)//跳转控件
                    {
                        strPageShowww 
= strPageShowww + "&nbsp;&nbsp;" + strTurnww;
                    }


                    
#endregion


                    
样式一: 共X条信息 第N页/共M页 首页 上一页 下一页 尾页  跳转#region 样式一: 共X条信息 第N页/共M页 首页 上一页 下一页 尾页  跳转
                    
if (intStyle == 1)
                    
{
                        strPageShowww 
= strPageShowww.Replace("{0}""&nbsp;&nbsp;" + _PrevStr2);//上一页
                        strPageShowww = strPageShowww.Replace("{1}""&nbsp;&nbsp;" + _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)
                        
{
                            
//链接页的Page值 (页码够显示一批时,第一个显示当前页;不够时第一个显示的就是所有页中的第一页)
                            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>&nbsp;";
                                }

                                
else
                                
{
                                    strPageNum 
= strPageNum + "<a href=\"" + _TurnUrlStr + "?Page=" + strTempNow + "&" + _Options + "\">" + strTempNow + "</a>&nbsp;"
                                }

                            }

                        }

                        
else
                        
{
                            
for (int i = 0; i < intShowNum; i++)
                            
{
                                strTempNow 
= Convert.ToString(PageIndex + i);

                                
//当前页不显示超链接
                                if (i == 0)
                                
{
                                    strPageNum 
= strPageNum + "<b>" + strTempNow + "</b>&nbsp;";
                                }

                                
else
                                
{
                                    strPageNum 
= strPageNum + "<a href=\"" + _TurnUrlStr + "?Page=" + strTempNow + "&" + _Options + "\">" + strTempNow + "</a>&nbsp;";
                                }

                            }

                        }


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

                    
#endregion


                    
样式三: 共X条信息 第N页/共M页 首页 1 2 3 尾页 跳转 当前页码定位在第3位#region 样式三: 共X条信息 第N页/共M页 首页 1 2 3 尾页 跳转 当前页码定位在第3位

                    
if (intStyle == 3)
                    
{
                        
int PageTemp = 0;
                        
int intPlace = 2;//前面保持有两个,则当前页码定位在第3位
                        string strPageNum = "";
                        
string strTempNow = "";

                        
//当页码总数 <= 一页要显示的页码数
                        if (_PageCounts <= intShowNum)
                        
{
                            
for (int i = 1; i <= _PageCounts; i++)
                            
{
                                strTempNow 
= Convert.ToString(PageTemp + i);

                                
//当前页不显示超链接
                                if (PageIndex == PageTemp + i)
                                
{
                                    strPageNum 
= strPageNum + "<b>" + strTempNow + "</b>&nbsp;";
                                }

                                
else
                                
{
                                    strPageNum 
= strPageNum + "<a href=\"" + _TurnUrlStr + "?Page=" + strTempNow + "&" + _Options + "\">" + strTempNow + "</a>&nbsp;";
                                }

                            }

                        }

                        
else
                        
{
                            
//当前页码 <= 固定位置 intPlace
                            if (_PageIndex <= intPlace)
                            
{
                                
for (int i = 1; i <= intShowNum; i++)
                                
{
                                    strTempNow 
= Convert.ToString(i);

                                    
//当前页不显示超链接
                                    if (_PageIndex == i)
                                    
{
                                        strPageNum 
= strPageNum + "<b>" + strTempNow + "</b>&nbsp;";
                                    }

                                    
else
                                    
{
                                        strPageNum 
= strPageNum + "<a href=\"" + _TurnUrlStr + "?Page=" + strTempNow + "&" + _Options + "\">" + strTempNow + "</a>&nbsp;";
                                    }

                                }

                            }

                            
//当前页码 >=最后一批该显示
                            else if (_PageIndex >= _PageCounts - intPlace + 1)
                            
{
                                
//第一个显示的数字
                                PageTemp = _PageCounts - intShowNum + 1;
                                
for (int i = PageTemp; i <= _PageCounts; i++)
                                
{
                                    
if (i > _PageCounts) break;

                                    strTempNow 
= Convert.ToString(i);

                                    
//当前页不显示超链接
                                    if (PageIndex == i)
                                    
{
                                        strPageNum 
= strPageNum + "<b>" + strTempNow + "</b>&nbsp;";
                                    }

                                    
else
                                    
{
                                        strPageNum 
= strPageNum + "<a href=\"" + _TurnUrlStr + "?Page=" + strTempNow + "&" + _Options + "\">" + strTempNow + "</a>&nbsp;";
                                    }

                                }

                            }

                            
else
                            
{
                                
for (int i = PageIndex - intPlace; i < PageIndex - intPlace + intShowNum; i++)
                                
{
                                    strTempNow 
= Convert.ToString(i);

                                    
//当前页不显示超链接
                                    if (i == PageIndex)
                                    
{
                                        strPageNum 
= strPageNum + "<b>" + strTempNow + "</b>&nbsp;";
                                    }

                                    
else
                                    
{
                                        strPageNum 
= strPageNum + "<a href=\"" + _TurnUrlStr + "?Page=" + strTempNow + "&" + _Options + "\">" + strTempNow + "</a>&nbsp;";
                                    }

                                }

                            }

                        }


                        
//
                        strPageShowww = strPageShowww.Replace("{0}""&nbsp;&nbsp;" + _PrevStr2);//上一页
                        strPageShowww = strPageShowww.Replace("{1}""&nbsp;&nbsp;" + strPageNum);//显示数字
                        strPageShowww = strPageShowww.Replace("{2}""&nbsp;&nbsp;" + _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 () 功能,能够达到更好的效果.
    目前一共6种样式,6种样式里还可以设置参数,把页码显示调整到最简,只剩下 上一页 下一页,
    且 上一页 下一页 等文字可以自定义,用图片也可以,只是要把字符串拼成图片的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

}

 

转载于:https://www.cnblogs.com/84ww/archive/2008/04/27/1173264.html

相关文章:

  • lightbox灯箱效果
  • VB数据类型概述
  • 苹果支付系统——Apple Pay In-App Purchase
  • Notepad++ install vi plugin
  • 论蒙牛能在网上卖牛奶,是否可行?
  • ruby学习笔记
  • 行业内幕:服务器低价租用的真实面目
  • [Intel Edison开发板] 05、Edison开发基于MRAA实现IO控制,特别是UART通信
  • 智能实验室-全能优化(Guardio) 5.03.0.1011
  • 送给自己
  • mysql中查询语句中的一个知识点说明
  • 《网管员必读》系列第二版大集合了
  • MyBatis源码解读(4)——SqlSession(上)
  • 对最近一段时间的总结
  • [工具]ps
  • 分享一款快速APP功能测试工具
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 30天自制操作系统-2
  • HTML5新特性总结
  • isset在php5.6-和php7.0+的一些差异
  • javascript数组去重/查找/插入/删除
  • linux学习笔记
  • MySQL QA
  • 回顾 Swift 多平台移植进度 #2
  • 嵌入式文件系统
  • 学习Vue.js的五个小例子
  • 用jquery写贪吃蛇
  • 运行时添加log4j2的appender
  • 交换综合实验一
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​香农与信息论三大定律
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # include “ “ 和 # include < >两者的区别
  • #ifdef 的技巧用法
  • #stm32驱动外设模块总结w5500模块
  • (2)(2.10) LTM telemetry
  • (4)事件处理——(7)简单事件(Simple events)
  • (js)循环条件满足时终止循环
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (转)VC++中ondraw在什么时候调用的
  • . Flume面试题
  • .CSS-hover 的解释
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • /etc/sudoers (root权限管理)
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @Responsebody与@RequestBody
  • [ 数据结构 - C++]红黑树RBTree
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [AHOI2009]中国象棋 DP,递推,组合数
  • [C#][DevPress]事件委托的使用
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强
  • [C++][基础]1_变量、常量和基本类型
  • [Git 1]基本操作与协同开发