`

带样式的页码代码

阅读更多

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using System.Collections;
namespace WebPages
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:Pages runat=\"server\"></{0}:Pages>")]
    public class Pages : WebControl
    {
        private int _CuttentPage;
        private int _NumCount;
        private int _PageSize = 1;
        private string _Url = "";
        private string _RewriteFormat = "";
        private string _RewriteRegex = "";
        private Dictionary<string, string> _regs;
        private string _CurrentCss;
        public int CurrentPage
        {
            set
            {
                if (Regex.IsMatch(Convert.ToString(value), "^\\d+$"))
                {
                    this._CuttentPage = Convert.ToInt32(value);
                }
                else
                {
                    this._CuttentPage = 0;
                }
            }
            get
            {
                return this._CuttentPage;
            }
        }
        public int NumCount
        {
            set
            {
                if (Regex.IsMatch(Convert.ToString(value), "^\\d+$"))
                {
                    this._NumCount = Convert.ToInt32(value);
                }
                else
                {
                    this._NumCount = 0;
                }
            }
            get
            {
                return this._NumCount;
            }
        }
        public int PageSize
        {
            set
            {
                if (Regex.IsMatch(Convert.ToString(value), "^\\d+$"))
                {
                    this._PageSize = Convert.ToInt32(value);
                }
                else
                {
                    this._PageSize = 1;
                }
            }
            get
            {
                return this._PageSize;
            }
        }
        //地址
        public string Url
        {
            set
            {
                _Url = value;
            }
            get
            {
                if (string.IsNullOrEmpty(_Url))
                {
                    try
                    {
                        _Url = this.Parent.Page.Request.RawUrl.ToString();
                    }
                    catch
                    {

                        _Url = "";
                    }
                 
                }
                return this._Url;
            }
        }
        public string RewriteFormat
        {
            set { this._RewriteFormat = value; }
            get { return this._RewriteFormat; }
        }
        public string RewriteRegex
        {
            set { _RewriteRegex = value; }
            get { return this._RewriteRegex; }
        }
        public string CurrentCss
        {
            set { _CurrentCss = value; }
            get {
                if (string.IsNullOrEmpty(_CurrentCss))
                    _CurrentCss = "";
                return this._CurrentCss; }
        }
        public Dictionary<string, string> Regs
        {
            set {
                this._regs = value;
            }
            get {
                if (_regs == null) {
                    _regs = new Dictionary<string, string>();              
                }                
                return _regs;
            }
        }

        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }

            set
            {
                ViewState["Text"] = value;
            }
        }


        protected string getUrl(string url)
        {
            MatchCollection mats = Regex.Matches(url, "(?<first>[\\w]*)=(?<two>[^&]*[\u4e00-\u9fa5]+[^&]*)", RegexOptions.IgnoreCase | RegexOptions.Multiline);
            foreach (Match mat in mats)
            {
          
                url = url.Replace(mat.Groups["first"].Value + "=" + mat.Groups["two"].Value, mat.Groups["first"].Value + "=" + HttpUtility.UrlEncodeUnicode(mat.Groups["two"].Value.Trim()));
             }
            return url;
        }
        /// <summary>
        /// 根据当前的页数显示的当前页的底部分页
        /// </summary>
        /// <param name="current"></param>
        /// <param name="size"></param>
        /// <param name="zong"></param>
        /// <returns></returns>
        protected string GetPage(int current, int size, int zong)
        {
            string url = this.Url;
            url = getUrl(url).ToLower();
          
            string urltemp ="";
            urltemp = url.IndexOf("page=") >= 0 ? (Regex.Replace(url, "page=([^&]*)", "page={0}",RegexOptions.Multiline|RegexOptions.Singleline|RegexOptions.IgnoreCase)) : (url.IndexOf("?") >= 0 ? (url + "&page={0}") : (url + "?page={0}"));
            if(this.RewriteFormat.Length>0)
            {
                Regex reg = new Regex(RewriteRegex, RegexOptions.IgnoreCase);
                if (reg.IsMatch(urltemp))
                {
                    urltemp = reg.Replace(urltemp, RewriteFormat);
                }
            }        
            int pagecount = zong % size == 0 ? (zong / size) : (zong / size + 1);
            int num = current / 10;

            System.Text.StringBuilder sball = new System.Text.StringBuilder("");
            int xian = current / 10 + 1;

            int before = current % 10 == 0 ? (current / 10) : (current / 10);
            sball.AppendFormat("<a href='" + string.Format(urltemp, current - 1 < 1 ? ("1") : ((current - 1).ToString())) + "'>上一页</a>&nbsp;");
            for (int i = ((before * 10 - 5) > 0 ? (before * 10 - 5) : (1)); i <= (before * 10 == 0 ? (1) : (before * 10-1)); i++)
            {
                if ((before * 10 - 5) < 0)
                    continue;
                if ((i+1) == current)
                    sball.AppendFormat("<a href='" + string.Format(urltemp, (i + 1).ToString()) + "' class=\"{1}\">{0}</a>&nbsp;", (i + 1).ToString(), CurrentCss);
                else
                    sball.AppendFormat("<a href='" + string.Format(urltemp, (i + 1).ToString()) + "'>{0}</a>&nbsp;", (i + 1).ToString());
                sball.Append("&nbsp;");
            }
            for (int i = ((xian - 1) * 10 > pagecount ? (pagecount) : ((xian - 1) * 10)); i < (xian * 10 < pagecount ? (xian * 10) : (pagecount)); i++)
            {

                if (i == 0)
                    sball.AppendFormat("<a href='" + string.Format(urltemp, (i + 1).ToString()) + "'>").Append((i + 1)).Append("</a>&nbsp;");
                else if ((i+1) == current)
                    sball.AppendFormat("<a href='" + string.Format(urltemp, (i + 1).ToString()) + "' class=\"{1}\">{0}</a>&nbsp;", (i + 1).ToString(), CurrentCss);

                else
                    sball.Append("&nbsp;<a href='" + string.Format(urltemp, (i + 1).ToString()) + "'>").Append((i + 1)).Append("</a>&nbsp;");

            }
            sball.Append("<a href='" + string.Format(urltemp, (current + 1 > pagecount ? (pagecount.ToString()) : ((current + 1).ToString()))) + "'>下一页</a>");
            //sball.Append("&nbsp;共").Append(zong.ToString()).Append("条&nbsp;当前第&nbsp;").Append((current).ToString()).Append("&nbsp;页").Append("&nbsp;共&nbsp;").Append(pagecount).Append("&nbsp;页");
            return sball.ToString();
          
        }

        protected override void RenderContents(HtmlTextWriter output)
        {
            //<td style=\"width: 30%\"><input type=\"text\" id=\"Pages1_TbPageGo\"  onKeyUp=\"this.value=this.value.replace(/[^\\d]+/,'')\" style=\"width: 33px\"/><input id=\"BtGo\" style=\"width: 34px\" type=\"button\" value=\"GO\" onClick=\"document.location.href=document.location.href.indexOf('page=')>=0?(document.location.href.replace(/page=([^&]*)/,'page='+document.getElementById('Pages1_TbPageGo').value)):(document.location.href.indexOf('?')>=0?(document.location.href+'&page='+document.getElementById('Pages1_TbPageGo').value):(document.location.href+'?page='+document.getElementById('Pages1_TbPageGo').value))\"/></td>
            string tempData = "<table border=\"0\" width=\"100%\" height=\"30px\" style=\"margin:0px\" class=\"pagers\"><tr><td width=\"100%\" style=\"padding-top:5px\">{0}{1}</td></tr></table>";
            output.Write(string.Format(tempData, GetPage(CurrentPage, PageSize, NumCount), "<style type=\"text/css\">.pagers{ background:#F2F7FD; border-top:#B1E6EC 1px solid; border-bottom:#B1E6EC 1px solid; margin-top:10px;  text-align:center; padding:12px 0;color:#000; font-size:12px } .pagers a{  border:#CBCBCB 1px solid; padding:2px 5px 0px 5px; background:#fff;text-decoration: none; } .pagers a:hover{ border:#58C9D6 1px solid; background:#D8EEFB} </style>"));
        }
    }
}

分享到:
评论

相关推荐

    24款超实用的Web 2.0风格翻页页码css代码

    本资源包含24款实用的Web 2.0风格翻页页码的CSS代码,这些代码可以帮助开发者快速实现现代化、吸引人的页码设计。每款代码都可能有不同的样式、颜色、布局和交互效果,旨在满足不同的设计需求和品牌风格。通过应用...

    html+css实现简单分页页码效果

    html+css实现简单分页页码效果源码,尚且没有复杂的后台,给前端新手学习之用

    24款实用的翻页页码css代码

    在“24款实用的翻页页码css代码”案例中,我们可以学习到各种风格和功能的设计,比如简约风格、复古风格,甚至带有动态效果的翻页页码。 1. **简约风格**:这种设计注重清晰性和易用性,通常只包含必要的数字和前后...

    24款实用的翻页页码css代码.

    当我们谈论“24款实用的翻页页码css代码”时,我们聚焦的是利用CSS(层叠样式表)来创建功能多样、视觉效果丰富的页码设计。CSS是一种用于描述HTML或XML(包括SVG、MathML等各种XML方言)文档样式的语言,它可以极大...

    div+css制作非常实用的24款分页页码css代码

    本资源提供的是使用div+css技术编写的24种实用分页页码样式,这些代码可以帮助开发者创建出美观且功能齐全的分页组件。下面将详细介绍这个资源中的关键知识点以及如何运用它们。 首先,`div` 和 `css` 是Web前端...

    jquery带页码标识焦点图代码.zip

    标题中的“jquery带页码标识焦点图代码”指的是一个使用jQuery库实现的具有分页功能的焦点图(轮播图)代码示例。这个压缩包包含了一整套用于创建带有页码显示的焦点图的HTML、CSS和JavaScript文件。下面我们将深入...

    通用分页可以选择页码的显示样式

    ### 通用分页可以选择页码的显示样式 #### 概述 本文将详细介绍一个ASP.NET中的自定义分页类——`Pageing`。该类旨在为Web应用提供灵活且可定制化的分页功能,允许开发者根据需求选择不同的页码显示样式。通过调整...

    dxComponentPrinter的页码

    1. **页码配置**:dxComponentPrinter允许在代码中设置页码的起始值、页码格式(例如,可以是数字、罗马数字等)、以及页码的显示位置(左、中、右)。 2. **页眉和页脚**:除了页码,dxComponentPrinter还支持添加...

    用OpenXml创建一个带页码的Word文档

    在IT行业中,OpenXml是一种强大的工具,...总之,利用OpenXml创建带有页码的Word文档涉及到对OpenXml结构的深入理解,以及对页眉、页脚和字段代码的掌握。通过熟练运用这些知识,你可以创建出复杂而定制化的Word文档。

    jquery 分页代码,支持页码选择,可扩展!

    5. **可扩展性**:此代码库设计时考虑了扩展性,意味着可以方便地添加新的功能或进行自定义样式调整,以满足项目的特定需求。 在实际应用中,分页插件通常与后台数据接口配合使用。当用户切换页码时,前端会发送...

    显示页码及纠正错误小程序代码备份.rar

    "显示页码及纠正错误小程序代码备份"这个标题暗示我们正在处理一个与网页或应用程序相关的项目,它包含了显示页码的功能以及错误纠正机制。这个压缩包文件可能是开发者为了防止数据丢失或进行版本控制而做的备份。 ...

    一个页码类文件

    开发者可以通过修改这个CSS文件来调整页码的样式,比如颜色、大小、字体、边框等,以符合网站的整体设计风格。 标签中提到了“.net”,这意味着这个页码类是使用.NET框架编写的,可能是C#或VB.NET。这使得它能够很...

    JSP实现百度谷歌分页页码功能源代码

    请注意,实际的`page.jsp`代码可能还会包含错误处理、样式调整以及其他优化,以提供更好的用户体验。 总的来说,JSP实现的分页功能结合了数据库操作、服务器端逻辑和客户端呈现。通过理解和应用上述知识点,你可以...

    Java 使用iText7生成带页码的PDF文件(同时生成目录,但是不会合并两个PDF)

    在实际开发中,你可能需要根据具体需求调整代码,比如改变页码样式、调整目录深度等。总的来说,iText7为Java开发者提供了一套强大且灵活的工具,用于生成高质量的PDF文件。通过深入学习和实践,你可以创建出满足...

    Word页码随意定

    3. **插入页码**:在“页眉和页脚工具”的“设计”选项卡中选择“页码”-“页面底端”-选择一种样式。 4. **设置起始页码**:选中页码后,在“设计”选项卡中找到“页码格式”,设置起始页码为“0”。 通过以上步骤...

Global site tag (gtag.js) - Google Analytics