⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fy.txt

📁 ASP.Net自定义控件分页代码
💻 TXT
字号:
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.Specialized;
namespace SkyDream
{
    public enum DisplayType
    {
        Block,
        Inline
    }

    [System.ComponentModel.Designer(typeof(PagerDesigner))]
    [ToolboxData("<{0}:SkyDreamPager runat=server></{0}:SkyDreamPager>")]
    public class SkyDreamPager : Control
    {
        protected const string VSKEY_ITEMCOUNT = "ItemCount";
        protected const string VSKEY_PAGEINDEX = "PageIndex";
        protected const string VSKEY_PAGESIZE = "PageSize";
        protected const string VSKEY_DISPLAYPAGES = "DisplayPages";
        protected const int FIRST_PAGE_INDEX = 1;
        protected const int PAGESIZE_MIN = 1;
        protected const int PAGESIZE_DEFAULT = 20;
        protected const int DISPLAYPAGES_MIN = 3;
        protected const int DISPLAYPAGES_DEFAULT = 10;
        protected const string SPACER_DEFAULT = "&nbsp;";
        protected const string FIRSTTEXT_DEFAULT = "首页";
        protected const string LASTTEXT_DEFAULT = "末页";
        protected const string PREFIXTEXT_DEFAULT = "上一页";
        protected const string SUFFIXTEXT_DEFAULT = "下一页";
        protected const string LINKFORMAT_DEFAULT = "<a href=\"{0}\">[{1}]</a>";
        protected const string LINKFORMAT_ACTIVE_DEFAULT = "<font class=\"Current\">{0}</font>";
        protected const string URLFORMAT_DEFAULT = "?page={0}";
        protected const string QUERYSTRINGPAGEINDEX_DEFAULT = "page";
        protected DisplayType _displayMode = DisplayType.Block;

        protected string _cssClass="";
        protected bool _useSpacer = true;
        protected string _spacer;
        protected string _urlFormat = URLFORMAT_DEFAULT;
        protected string _linkFormat = LINKFORMAT_DEFAULT;
        protected string _linkFormatActive = LINKFORMAT_ACTIVE_DEFAULT;
        protected bool _useFirstLast = true;
        protected string _firstText = FIRSTTEXT_DEFAULT;
        protected string _lastText = LASTTEXT_DEFAULT;
        protected bool _usePrefixSuffix = true;
        protected string _prefixText = PREFIXTEXT_DEFAULT;
        protected string _suffixText = SUFFIXTEXT_DEFAULT;
        private string _queryStringPageIndex = QUERYSTRINGPAGEINDEX_DEFAULT;
        protected bool _isDisplayOnePage = true;

        public SkyDreamPager()
        {
            ViewState[VSKEY_ITEMCOUNT] = 0;
            ViewState[VSKEY_PAGEINDEX] = FIRST_PAGE_INDEX;
            ViewState[VSKEY_PAGESIZE] = PAGESIZE_DEFAULT;
            this.DisplayPages = DISPLAYPAGES_DEFAULT;
        }
        public bool IsDisplayOnePage
        {
            get { return _isDisplayOnePage; }
            set { _isDisplayOnePage = value; }
        }
        public DisplayType DisplayMode
        {
            get { return _displayMode; }
            set { _displayMode = value; }
        }
        public string CssClass
        {
            get { return _cssClass; }
            set { _cssClass = value; }
        }

        public int ItemCount
        {
            get
            {
                return (int)ViewState[VSKEY_ITEMCOUNT];
            }
            set
            {
                if (value < 0)
                    ViewState[VSKEY_ITEMCOUNT] = 0;
                else
                    ViewState[VSKEY_ITEMCOUNT] = value;
            }
        }

        public int PageIndex
        {
            get
            {
                return (int)ViewState[VSKEY_PAGEINDEX];
            }
            set
            {
                if (value >= FIRST_PAGE_INDEX)
                    ViewState[VSKEY_PAGEINDEX] = value;
                else
                    ViewState[VSKEY_PAGEINDEX] = FIRST_PAGE_INDEX;
            }
        }

        public int PageSize
        {
            get
            {
                return (int)ViewState[VSKEY_PAGESIZE];
            }
            set
            {
                if (value >= PAGESIZE_MIN)
                    ViewState[VSKEY_PAGESIZE] = value;
                else
                    ViewState[VSKEY_PAGESIZE] = PAGESIZE_MIN;
            }
        }

        public int MaxPages
        {
            get
            {
                if (PageSize > 0)
                    return (int)Math.Ceiling((double)ItemCount / PageSize);
                else
                    return 0;
            }
        }

        public int DisplayPages
        {
            get
            {
                return (int)ViewState[VSKEY_DISPLAYPAGES];
            }
            set
            {
                int displayPages = value;
                if (displayPages < DISPLAYPAGES_MIN)
                    displayPages = DISPLAYPAGES_MIN;

                ViewState[VSKEY_DISPLAYPAGES] = displayPages;
            }
        }

        public string Spacer
        {
            get
            {
                if (null == _spacer || _spacer.Length == 0)
                    _spacer = SPACER_DEFAULT;

                return _spacer;
            }
            set { _spacer = value; }
        }

        public bool UseSpacer
        {
            get { return _useSpacer; }
            set { _useSpacer = value; }
        }

        public string UrlFormat
        {
            get { return _urlFormat; }
            set { _urlFormat = value; }
        }

        public string LinkFormat
        {
            get { return _linkFormat; }
            set { _linkFormat = value; }
        }

        public string LinkFormatActive
        {
            get { return _linkFormatActive; }
            set { _linkFormatActive = value; }
        }

        public bool UseFirstLast
        {
            get { return _useFirstLast; }
            set { _useFirstLast = value; }
        }

        public string FirstText
        {
            get { return _firstText; }
            set { _firstText = value; }
        }

        public string LastText
        {
            get { return _lastText; }
            set { _lastText = value; }
        }

        public bool UsePrefixSuffix
        {
            get { return _usePrefixSuffix; }
            set { _usePrefixSuffix = value; }
        }

        public string SuffixText
        {
            get { return _suffixText; }
            set { _suffixText = value; }
        }

        public string PrefixText
        {
            get { return _prefixText; }
            set { _prefixText = value; }
        }

        public string QueryStringPageIndex
        {
            get { return _queryStringPageIndex; }
            set { _queryStringPageIndex = value; }
        }

        protected override void Render(HtmlTextWriter writer)
        {
            if (!_isDisplayOnePage && MaxPages == 1)
            {
                writer.Write("");
            }
            else
            {
                if (_cssClass.Length > 0)
                    writer.AddAttribute("class", _cssClass);

                if (_displayMode == DisplayType.Block)
                    writer.RenderBeginTag(HtmlTextWriterTag.Div);
                else if (_displayMode == DisplayType.Inline)
                    writer.RenderBeginTag(HtmlTextWriterTag.Span);
                writer.Write(GetPagesInfo());
                writer.RenderEndTag();
            }
        }

        #region 是否数字字符串
        private bool IsNumber(string inputData)
        {
            if (inputData.Length < 10)
            {
                Regex RegNumber = new Regex("^[0-9]+$");
                Match m = RegNumber.Match(inputData);
                return m.Success;
            }
            else
                return false;
        }
        #endregion

        #region 处理查询字符串
        public string GetQueryString(System.Web.UI.Page page)
        {
            string url = page.Request.RawUrl.ToString();
            int pos = url.IndexOf("?");
            StringBuilder sb = new StringBuilder();
            sb.Append(_urlFormat);
            sb.Append("?");
            if (pos != -1)//带参数
            {
                //处理参数
                NameValueCollection coll = page.Request.QueryString;
                string[] arr1 = coll.AllKeys;
                for (int i = 0; i < arr1.Length; i++)
                {
                    if (arr1[i].Trim() != _queryStringPageIndex)
                    {
                        string[] arr2 = coll.GetValues(arr1[i]);
                        sb.Append(arr1[i].Trim());
                        sb.Append("=");
                        sb.Append(page.Server.UrlEncode(arr2[arr2.Length - 1].Trim()));
                        sb.Append("&");
                    }
                }
            }
            sb.Append(_queryStringPageIndex);
            sb.Append("={0}");
            return sb.ToString();
        }
        #endregion

        #region 获取请求页号
        public int GetPageIndex(System.Web.UI.Page page)
        {
            if (page.Request.QueryString[_queryStringPageIndex] != null)
            {
                string tmpPageIndex = page.Request.QueryString[_queryStringPageIndex].ToString().Trim();
                if (IsNumber(tmpPageIndex))
                {
                    if (int.Parse(tmpPageIndex) < 0 || int.Parse(tmpPageIndex) > MaxPages)
                        return 1;
                    else
                        return int.Parse(tmpPageIndex);
                }
            }
            return 1;
        }
        #endregion

        #region 分页信息
        private string GetPagesInfo()
        {
            StringBuilder pagesInfo = new StringBuilder();

            if (PageIndex > MaxPages)
                PageIndex = MaxPages;

            int begin = PageIndex - DisplayPages / 2;
            int end = PageIndex + DisplayPages / 2;
            if (DisplayPages % 2 == 0)
                begin--;
            if (begin <= 0)
            {
                begin = 1;
            }
            if (MaxPages <= DisplayPages)
            {
                begin = 1;
                end = MaxPages;
            }
            else
            {
                if (end > MaxPages)
                {
                    end = MaxPages;
                    begin = MaxPages - DisplayPages + 1;
                }
                else
                {
                    if (end < DisplayPages)//结束页面小于显示页码时
                        end = DisplayPages;
                }
            }

            if (PageIndex > 1 && UseFirstLast)//首页
            {
                pagesInfo.Append(string.Format(_linkFormat, string.Format(_urlFormat, 1), _firstText));
                if (_useSpacer)
                    pagesInfo.Append(_spacer);
            }


            if (PageIndex > 1 && UsePrefixSuffix)//向前翻
            {
                pagesInfo.Append(string.Format(_linkFormat, string.Format(_urlFormat, PageIndex - 1), _prefixText));
                if (_useSpacer)
                    pagesInfo.Append(_spacer);
            }

            for (int i = begin; i <= end; i++)//页数
            {
                if (i == PageIndex)
                    pagesInfo.Append(string.Format(_linkFormatActive, PageIndex));
                else
                    pagesInfo.Append(string.Format(_linkFormat, string.Format(_urlFormat, i), i));
                if (_useSpacer)
                    pagesInfo.Append(_spacer);
            }

            if (PageIndex < MaxPages && UsePrefixSuffix) //向后翻
            {
                pagesInfo.Append(string.Format(_linkFormat, string.Format(_urlFormat, PageIndex + 1), _suffixText));
                if (_useSpacer)
                    pagesInfo.Append(_spacer);
            }

            if (PageIndex < MaxPages && UseFirstLast)//末页
            {
                pagesInfo.Append(string.Format(_linkFormat, string.Format(_urlFormat, MaxPages), _lastText));
                if (_useSpacer)
                    pagesInfo.Append(_spacer);
            }
            return pagesInfo.ToString();
        }
        #endregion

    }

    public class PagerDesigner : System.Web.UI.Design.ControlDesigner
    {
        public override string GetDesignTimeHtml()
        {
            return base.GetDesignTimeHtml();
        }

        public override void Initialize(System.ComponentModel.IComponent component)
        {
            if (component is SkyDreamPager)
            {
                SkyDreamPager context = component as SkyDreamPager;
                context.PageSize = 10;
                context.ItemCount = 120;
                context.PageIndex++;
            }

            base.Initialize(component);
        }

    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -