UrlPager source code - Properties.cs

/*
 ASP.NET UrlPager control
 Copyright:2009-2010 Webdiyer (http://en.webdiyer.com)
 Source code released under Ms-PL license
 */
using System;
using System.ComponentModel;
using System.Web.Routing;

namespace Webdiyer.WebControls
{
    public partial class UrlPager
    {
        #region fields

        private const string CopyrightText =
            "<!--ASP.NET UrlPager 1.0 Copyright:2010 Webdiyer(http://en.webdiyer.com)-->";
        private static readonly object EventPageChanged = new object();
        #endregion

        #region public properties

        /// <summary>
        /// route name
        /// </summary>
        public string RouteName
        {
            get
            {
                object obj = ViewState["RouteValue"];
                return (string)obj;
            }
            set { ViewState["RouteValue"] = value; }
        }

        /// <summary>
        /// route values
        /// </summary>
        [Browsable(true)]
        public RouteValueDictionary RouteValues { get
        {
            object obj = ViewState["RouteValues"];
            return (RouteValueDictionary)obj;
        }
            set { ViewState["RouteValues"] = value; }
        }

        [DefaultValue(false)]
        public bool InheritsRouteValues
        {
            get
            {
                object obj = ViewState["InheritsRouteValues"];
                return obj == null ? false : (bool)obj;
            }
            set
            {
                ViewState["InheritsRouteValues"] = value;
            }
        }

        [Browsable(false)]
        public int TotalItemCount
        {
            get
            {
                object obj = ViewState["TotalItemCount"];
                return obj == null ? 0 : (int)obj;
            }
            set
            {
                int count = value;
                if (value < 0)
                    count = 0;
                ViewState["TotalItemCount"] = count;
            }
        }

        [DefaultValue(10)]
        public int PageSize
        {
            get
            {
                object obj = ViewState["PageSize"];
                return obj == null ? 10 : (int)obj;
            }
            set
            {
                int pageSize = value;
                if (value <= 0)
                    pageSize = 10;
                ViewState["PageSize"] = pageSize;
            }
        }
        /// <summary>
        /// whether or not hide control(render nothing) automatically when there's only one page
        /// </summary>
        [DefaultValue(true)]
        public bool AutoHide
        {
            get
            {
                object obj = ViewState["AutoHide"];
                return obj == null ? true : (bool)obj;
            }
            set
            {
                ViewState["AutoHide"] = value;
            }
        }


        /// <summary>
        /// page index parameter name in url
        /// </summary>
        [DefaultValue("pageIndex"),Browsable(true)]
        public string PageIndexParameterName
        {
            get
            {
                object obj = ViewState["PageIndexParameterName"];
                return obj == null ? "pageIndex" : (string)obj;
            }
            set { ViewState["PageIndexParameterName"] = value; }
        }
        
        /// <summary>
        /// numeric pager item format string
        /// </summary>
        [DefaultValue(null)]
        public string PageNumberFormatString
        {
            get{return (string)ViewState["PageNumberFormatString"];}
            set { ViewState["PageNumberFormatString"] = value; }
        }

        /// <summary>
        /// all pageritem wrapper format string
        /// ToDo:此属性未使用
        /// </summary>
        [DefaultValue("{0}&nbsp;")]
        public string PagerItemWrapperFormatString
        {
            get
            {
                object obj = ViewState["PagerItemWrapperFormatString"];
                return obj == null ? "{0}&nbsp;" : (string)obj;
            }
            set { ViewState["PagerItemWrapperFormatString"] = value; }
        }

        /// <summary>
        /// current pager item format string
        /// </summary>
        public string CurrentPageNumberFormatString
        {
            get{return (string)ViewState["CurrentPageNumberFormatString"];}
            set { ViewState["CurrentPageNumberFormatString"] = value; }
        }

        /// <summary>
        /// NumericPager Item Wrapper Format String
        /// </summary>
        [DefaultValue("{0}&nbsp;")]
        public string NumericPagerItemWrapperFormatString
        {
            get
            {
                object obj = ViewState["NumericPagerItemWrapperFormatString"];
                return obj == null ? PagerItemWrapperFormatString : (string)obj;
            }
            set { ViewState["NumericPagerItemWrapperFormatString"] = value; }
        }

        /// <summary>
        /// Current Pager Item Wrapper Format String
        /// </summary>
        [DefaultValue("{0}&nbsp;")]
        public string CurrentPagerItemWrapperFormatString
        {
            get
            {
                object obj = ViewState["CurrentPagerItemWrapperFormatString"];
                return obj == null ? PagerItemWrapperFormatString : (string)obj;
            }
            set { ViewState["CurrentPagerItemWrapperFormatString"] = value; }
        }

        /// <summary>
        /// NavigationPager Item Wrapper Format String
        /// </summary>
        [DefaultValue("{0}&nbsp;")]
        public string NavigationPagerItemWrapperFormatString
        {
            get
            {
                object obj = ViewState["NavigationPagerItemWrapperFormatString"];
                return obj == null ? PagerItemWrapperFormatString : (string)obj;
            }
            set { ViewState["NavigationPagerItemWrapperFormatString"] = value; }
        }

        /// <summary>
        /// MorePagerItem Wrapper Format String
        /// </summary>
        [DefaultValue("{0}&nbsp;")]
        public string MorePagerItemWrapperFormatString
        {
            get
            {
                object obj = ViewState["MorePagerItemWrapperFormatString"];
                return obj == null ? PagerItemWrapperFormatString : (string)obj;
            }
            set { ViewState["MorePagerItemWrapperFormatString"] = value; }
        }
        
        /// <summary>
        /// whether or not show first and last numeric page number
        /// </summary>
        [DefaultValue(false)]
        public bool AlwaysShowFirstLastPageNumber
        {
            get
            {
                object obj = ViewState["AlwaysShowFirstLastPageNumber"];
                return obj == null ? false : (bool)obj;
            }
            set
            {
                ViewState["AlwaysShowFirstLastPageNumber"] = value;
            }
        }
        /// <summary>
        /// numeric pager items count
        /// </summary>
        [DefaultValue(10)]
        public int NumericPagerItemCount
        {
            get
            {
                object obj = ViewState["NumericPagerItemCount"];
                return obj == null ? 10 : (int)obj;
            }
            set { ViewState["NumericPagerItemCount"] = value; }
        }
        /// <summary>
        /// whether or not show previous and next pager items
        /// </summary>
        [DefaultValue(true)]
        public bool ShowPrevNext
        {
            get
            {
                object obj = ViewState["ShowPrevNext"];
                return obj == null ? true : (bool)obj;
            }
            set
            {
                ViewState["ShowPrevNext"] = value;
            }
        }
        /// <summary>
        /// previous page text
        /// </summary>
        [DefaultValue("Prev")]
        public string PrevPageText
        {
            get
            {
                string txt = (string)ViewState["PrevPageText"];
                return string.IsNullOrEmpty(txt) ? "Prev" : txt;
            }
            set { ViewState["PrevPageText"] = value; }
        }
        /// <summary>
        /// next page text
        /// </summary>
        [DefaultValue("Next")]
        public string NextPageText
        {
            get
            {
                string txt = (string)ViewState["NextPageText"];
                return string.IsNullOrEmpty(txt) ? "Next" : txt;
            }
            set { ViewState["NextPageText"] = value; }
        }
        /// <summary>
        /// whether or not show numeric pager items
        /// </summary>
        [DefaultValue(true)]
        public bool ShowNumericPagerItems
        {
            get
            {
                object obj = ViewState["ShowNumericPagerItems"];
                return obj == null ? true : (bool)obj;
            }
            set
            {
                ViewState["ShowNumericPagerItems"] = value;
            }
        }
        /// <summary>
        /// whether or not show first and last pager items
        /// </summary>
        [DefaultValue(true)]
        public bool ShowFirstLast
        {
            get
            {
                object obj = ViewState["ShowFirstLast"];
                return obj == null ? true : (bool)obj;
            }
            set
            {
                ViewState["ShowFirstLast"] = value;
            }
        }
        /// <summary>
        /// first page text
        /// </summary>
        [DefaultValue("First")]
        public string FirstPageText
        {
            get
            {
                string txt = (string)ViewState["FirstPageText"];
                return string.IsNullOrEmpty(txt) ? "First" : txt;
            }
            set { ViewState["FirstPageText"] = value; }
        }
        /// <summary>
        /// last page text
        /// </summary>
        [DefaultValue("Last")]
        public string LastPageText
        {
            get
            {
                string txt = (string)ViewState["LastPageText"];
                return string.IsNullOrEmpty(txt) ? "Last" : txt;
            }
            set { ViewState["LastPageText"] = value; }
        }
        /// <summary>
        /// whethor or not show more pager items
        /// </summary>
        [DefaultValue(true)]
        public bool ShowMorePagerItems
        {
            get
            {
                object obj = ViewState["ShowMorePagerItems"];
                return obj == null ? true : (bool)obj;
            }
            set
            {
                ViewState["ShowMorePagerItems"] = value;
            }
        }
        /// <summary>
        /// more page text
        /// </summary>
        [DefaultValue("...")]
        public string MorePageText
        {
            get
            {
                string txt = (string)ViewState["MorePageText"];
                return string.IsNullOrEmpty(txt) ? "..." : txt;
            }
            set { ViewState["MorePageText"] = value; }
        }
        /// <summary>
        /// whether or not show disabled pager items
        /// </summary>
        [DefaultValue(true)]
        public bool ShowInactivePagerItems
        {
            get
            {
                object obj = ViewState["ShowInactivePagerItems"];
                return obj == null ? true : (bool)obj;
            }
            set
            {
                ViewState["ShowInactivePagerItems"] = value;
            }
        }

        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public int CurrentPageIndex
        {
            get
            {
                object cpage = ViewState["CurrentPageIndex"];
                int pindex = (cpage == null) ? 1 : (int)cpage;
                if (pindex > PageCount && PageCount > 0)
                    return PageCount;
                if (pindex < 1)
                    return 1;
                return pindex;
            }
            set
            {
                int cpage = value;
                if (cpage < 1)
                    cpage = 1;
                else if (cpage > PageCount)
                    cpage = PageCount;
                ViewState["CurrentPageIndex"] = cpage;
            }
        }

        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public int StartRecordIndex
        {
            get
            {
                return (CurrentPageIndex - 1) * PageSize + 1;
            }
        }

        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public int EndRecordIndex
        {
            get
            {
                if (CurrentPageIndex < PageCount)
                    return (CurrentPageIndex * PageSize);
                return TotalItemCount;
            }
        }

        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public int PageCount
        {
            get
            {
                if (TotalItemCount == 0)
                    return 1;
                return (int)Math.Ceiling((double)TotalItemCount / (double)PageSize);
            }
        }
        #endregion
    }