コード例 #1
0
        /// <summary>
        /// Build the entire html for the pager.
        /// </summary>
        /// <param name="pager"></param>
        /// <param name="settings"></param>
        /// <param name="urlBuilder"></param>
        /// <returns></returns>
        public string Build(Pager pager, PagerSettings settings, Func <int, string> urlBuilder)
        {
            Pager pagerData = pager;

            // Get reference to the default or custom url builder for this pager.
            StringBuilder buffer    = new StringBuilder();
            string        cssClass  = string.Empty;
            string        urlParams = string.Empty;
            string        url       = string.Empty;

            string cssClassForPage = string.IsNullOrEmpty(settings.CssClass) ? string.Empty : " class=\"" + settings.CssClass + "\"";

            // Build the starting page link.
            if (pagerData.CanShowFirst && settings.ShowFirstAndLastPage)
            {
                // First
                url = urlBuilder(1);
                buffer.Append("<li" + cssClassForPage + "><a href=\"" + url + "\">" + settings.Language.First + "</a></li>");

                // This is to avoid putting ".." between 1 and 2 for example.
                // If 1 is the starting page and we want to display 2 as starting page.
                if (pagerData.CanShowPrevious)
                {
                    buffer.Append("&nbsp;&nbsp;&nbsp;");
                }
            }

            if (pagerData.CurrentPage > 1)
            {
                url = urlBuilder(pagerData.CurrentPage - 1);
                buffer.Append("<li" + cssClassForPage + "><a href=\"" + url + "\">" + settings.Language.Prev + "</a></li>");
            }
            // Build the previous page link.
            if (pagerData.CanShowPrevious)
            {
                // Previous
                url = urlBuilder(pagerData.StartingPage - 1);
                buffer.Append("<li" + cssClassForPage + "><a href=\"" + url + "\">" + "..." + "</a></li>");
            }
            // Each page number.
            for (int ndx = pagerData.StartingPage; ndx <= pagerData.EndingPage; ndx++)
            {
                cssClass = (ndx == pagerData.CurrentPage) ? " class=\"" + settings.CssCurrentPage + "\"" : cssClassForPage;
                url      = urlBuilder(ndx);

                url = (ndx == pagerData.CurrentPage) ? string.Empty : " href=\"" + url + "\"";

                // Build page number link. <a href="<%=Url %>" class="<%=cssClass %>" ><%=ndx %></a>
                buffer.Append("<li" + cssClass + "><a" + url + ">" + ndx + "</a></li>");
            }

            // Build the next page link.
            if (pagerData.CanShowNext)
            {
                // Previous
                url = urlBuilder(pagerData.EndingPage + 1);
                buffer.Append("<li" + cssClassForPage + "><a href=\"" + url + "\">" + "..." + "</a></li>");
            }
            if (pagerData.CurrentPage < pagerData.TotalPages)
            {
                url = urlBuilder(pagerData.CurrentPage + 1);
                buffer.Append("<li" + cssClassForPage + "><a href=\"" + url + "\">" + settings.Language.Next + "</a></li>");
            }
            // Build the  ending page link.
            if (pagerData.CanShowLast && settings.ShowFirstAndLastPage)
            {
                url = urlBuilder(pagerData.TotalPages);

                // This is to avoid putting ".." between 7 and 8 for example.
                // If 7 is the ending page and we want to display 8 as total pages.
                if (pagerData.CanShowNext)
                {
                    buffer.Append("&nbsp;&nbsp;&nbsp;");
                }
                buffer.Append("<li" + cssClassForPage + "><a href=\"" + url + "\">" + settings.Language.Last + "</a></li>");
            }
            string content = buffer.ToString();

            return(content);
        }
コード例 #2
0
        /// <summary>
        /// Builds the entire html for the specified page index / total pages.
        /// </summary>
        /// <param name="pageIndex">Index of the page.</param>
        /// <param name="totalPages">The total pages.</param>
        /// <param name="settings">The settings for the pager.</param>
        /// <param name="urlBuilder">The URL builder.</param>
        /// <returns></returns>
        public string Build(int pageIndex, int totalPages, PagerSettings settings, Func <int, string> urlBuilder)
        {
            Pager pager = Pager.Get(pageIndex, totalPages, settings);

            return(Build(pager, pager.Settings, urlBuilder));
        }
コード例 #3
0
 /// <summary>
 /// Constructor to set properties.
 /// </summary>
 /// <param name="currentPage"></param>
 /// <param name="totalPages"></param>
 /// <param name="settings"></param>
 public Pager(int currentPage, int totalPages, PagerSettings settings)
 {
     _pagerSettings = settings;
     SetCurrentPage(currentPage, totalPages);
 }
コード例 #4
0
        /// <summary>
        /// Get the pager data using current page and totalPages.
        /// </summary>
        /// <param name="currentPage"></param>
        /// <param name="totalPages"></param>
        /// <param name="settings"></param>
        public static Pager Get(int currentPage, int totalPages, PagerSettings settings)
        {
            Pager data = new Pager(currentPage, totalPages, settings);

            return(data);
        }
コード例 #5
0
        /// <summary>
        /// Builds the html for non-ajax based url based paging.
        /// </summary>
        /// <param name="urlBuilder"></param>
        /// <param name="settings"></param>
        /// <returns></returns>
        public string ToHtml(Func <int, string> urlBuilder, PagerSettings settings)
        {
            string html = PagerBuilderWeb.Instance.Build(this, settings, urlBuilder);

            return(html);
        }
コード例 #6
0
 /// <summary>
 /// Calculate the starting page and ending page.
 /// </summary>
 /// <param name="pagerData"></param>
 /// <param name="pagerSettings"></param>
 public static void Calculate(Pager pagerData, PagerSettings pagerSettings)
 {
     _instance.Calculate(pagerData, pagerSettings);
 }