/// <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(" "); } } 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(" "); } buffer.Append("<li" + cssClassForPage + "><a href=\"" + url + "\">" + settings.Language.Last + "</a></li>"); } string content = buffer.ToString(); return(content); }
/// <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)); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }