`

页码源码

阅读更多

页码源码

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

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

            }
            sball.Append("&nbsp;<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)
        {
            string tempData = "<table border=\"0\" width=\"100%\" height=\"30px\" style=\"margin:0px\"><tr><td style=\"width: 89%\">{0}</td><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></tr></table>";
            output.Write(string.Format(tempData, GetPage(CurrentPage,PageSize,NumCount)));
        }
    }
}

分享到:
评论

相关推荐

    Python 如何批量提取Word文档的页码(并计算总页码)Python源码

    Python 如何批量提取Word文档的页码(并计算总页码)Python源码Python 如何批量提取Word文档的页码(并计算总页码)Python源码Python 如何批量提取Word文档的页码(并计算总页码)Python源码Python 如何批量提取Word...

    45套-404错误页面HTML模板-源码合集.zip

    这个源码合集提供了大量创意和实用的404页面设计,你可以根据项目需求选择合适的模板进行修改和应用。这不仅可以提升用户体验,还能在一定程度上减少用户流失,维护网站的整体流量和声誉。在实际操作中,结合HTML、...

    PHP分页页码函数提供源代码.rar

    这是自己写的一个PHP分页页码函数,没有带测试数据,不过有PHP环境的朋友直接运行in.php就行了,本分页包括一PHP分页最重要的类文件,代码里加有注释,告诉你如何使用它,希望正在为PHP颁困扰的朋友通过本程序能得到...

    基于UI培训视频和源码完整版最新

    综上所述,这个“基于UI培训视频和源码完整版最新”的资源,是一个全面的UI设计学习套餐,涵盖了Web UI设计的基础理论、实践技巧和行业知识,对于想要进入UI设计领域或提升自身设计能力的人来说,是一个非常有价值的...

    C#打印操作实例--设置页码打印范围源码(201903)

    本实例将深入探讨如何使用C#来实现设置页码打印范围的功能。在2019年3月的这个源码示例中,开发者可能关注的是如何精确控制打印机输出,确保用户能够根据需求选择打印特定的页面范围。 首先,C#中的打印功能主要...

    C#打印操作实例--设置页码打印范围源码(十分经典)

    本实例将深入探讨如何使用C#来实现设置页码打印范围的功能,这对于创建报告、文档预览或者任何需要用户自定义打印页码范围的场景至关重要。下面我们将详细讨论相关知识点。 1. **System.Drawing.Printing命名空间**...

    C#打印操作实例--设置页码打印范围源码(0515).rar

    本压缩包文件“C#打印操作实例--设置页码打印范围源码(0515).rar”提供了关于如何在C#中实现这一功能的具体代码示例。本文将深入探讨C#中的打印系统,如何设置页码打印范围,并通过实际的源码分析来帮助理解这一过程...

    用NPOI插入页码到Word的实例源码

    这个实例源码是关于如何使用NPOI在Word文档中插入页码的教程。NPOI为开发者提供了一个方便的API,可以让我们在不使用Microsoft Office组件的情况下对Word文档进行操作。 首先,我们要理解NPOI的基本用法。NPOI提供...

    C#打印操作实例--设置页码打印范围源码__0525).rar

    这个压缩包文件"**C#打印操作实例--设置页码打印范围源码__0525)**"很可能包含了一个具体的示例,用于演示如何在C#中设置打印机的页码范围,以便根据需求打印特定的页面。下面我们将深入探讨C#中与打印相关的知识点...

    Office办公自动化-如何批量提取Word文档的页码(并计算总页码)-Python实例源码.zip

    本示例涉及的主题是"Office办公自动化",特别是利用Python编程语言来批量提取Word文档的页码,并进行总页码的计算。这个过程通常涉及到文件操作、文本解析以及数据分析等技术。 Python是一种功能强大的编程语言,...

    C#打印操作实例--设置页码打印范围源码

    通过查看和分析这些源码,你可以更深入地理解如何在C#中实现复杂的打印操作,包括设置页码打印范围。这将帮助你提高代码编写效率,并且能够灵活应对各种打印需求。 总结来说,C#中的打印操作涉及到`PrintDocument`...

    Word用A4纸打印书本的页码计算工具(带vb源码)

    Word用A4纸打印书本的页码计算工具(带vb源码) 例: 20页的书页码排列: 20,1 18,3 16,5 14,7 12,9 2,19 4,17 6,15 8,13 10,11 插入打印机一张纸,打完再翻过来,就如此重复。 20,1,2,19,18,3,4,17,16,5,6,...

    C#打印操作实例--设置页码打印范围源码2019

    本实例主要探讨了如何在C#中实现设置页码打印范围的功能,这对于那些需要精确控制打印内容的项目至关重要。下面我们将深入讨论C#中的打印技术以及如何设置页码打印范围。 首先,C#中的打印功能主要依赖于`System....

    C#打印操作实例--设置页码打印范围源码(完整版)

    本实例将深入探讨如何使用C#来实现一个完整的打印功能,包括设置页码的打印范围。这个实例源码将帮助开发者更好地理解如何控制打印流程,以及如何自定义打印设置。 在C#中,我们可以利用System.Drawing.Printing...

    C#打印操作实例--设置页码打印范围源码_75.rar

    通过理解并应用这些源码,开发者可以更加灵活地控制打印任务,满足用户对于特定页码范围打印的需求。 在C#中,我们可以利用.NET Framework提供的`System.Drawing.Printing`命名空间来处理打印任务。这个命名空间...

    ios应用源码之自制超简易电子书,页码问题解决版 zoomingpdfviewer 20181210

    本项目“ios应用源码之自制超简易电子书,页码问题解决版 zoomingpdfviewer 20181210”就是这样一个例子,它专门针对PDF阅读器的页码显示问题进行了优化。下面我们将详细讨论这个项目中的关键知识点。 首先,`...

    C#打印操作实例--设置页码打印范围源码__(0521).rar

    这个压缩包文件“C#打印操作实例--设置页码打印范围源码__(0521).rar”显然包含了一个具体的示例,用于演示如何在C#中设置打印机的页码打印范围。以下是对这个主题的详细阐述: 首先,C#中的打印功能主要通过`...

    C#打印操作实例--设置页码打印范围源码__0525.rar

    这个“C#打印操作实例--设置页码打印范围源码__0525.rar”文件包含了一个具体的示例,展示了如何在C#中控制打印机进行定制化的打印工作,特别是如何设置页码打印的范围。下面将详细介绍相关的知识点。 1. **...

    C#打印操作实例--设置页码打印范围源码(0520_).rar

    这个压缩包文件“C#打印操作实例--设置页码打印范围源码(0520_).rar”显然是一个关于如何在C#中控制打印机进行特定页码范围打印的代码示例。以下是对这个主题的详细说明: C#提供了丰富的打印功能,主要通过System....

Global site tag (gtag.js) - Google Analytics