public static MvcHtmlString GetPager <T>(this System.Web.Mvc.HtmlHelper html, Paging.PagedResult <T> pagedResult, string url) { if (pagedResult == null || pagedResult.TotalNumberOfItems <= pagedResult.Paging.PageSize) { return(MvcHtmlString.Create(string.Empty)); } var ulBuilder = new TagBuilder("ul"); ulBuilder.AddCssClass("pagination"); var pagingIndexes = GetPagingIndexes( pagedResult.Paging.PageIndex, (int)Math.Ceiling((double)pagedResult.TotalNumberOfItems / pagedResult.Paging.PageSize)); for (int i = 0; i < pagingIndexes.Length; i++) { if (i > 0 && pagingIndexes[i - 1] != pagingIndexes[i] - 1) { var extraLiBuilder = new TagBuilder("li"); extraLiBuilder.InnerHtml = "<span>…</span>"; extraLiBuilder.AddCssClass("disabled"); ulBuilder.InnerHtml += extraLiBuilder.ToString(); } var liBuilder = new TagBuilder("li"); if (pagedResult.Paging.PageIndex == pagingIndexes[i]) { liBuilder.InnerHtml = "<span>" + (pagingIndexes[i] + 1).ToString() + "</span>"; liBuilder.AddCssClass("active"); } else { var pagingLinkBuilder = new TagBuilder("a"); string extendedUrl = url .SetParameter("sortColumn", pagedResult.Paging.SortColumn) .SetParameter("sortDirection", pagedResult.Paging.SortDirection.ToString()) .SetParameter("pageIndex", pagingIndexes[i].ToString()); pagingLinkBuilder.MergeAttribute("href", extendedUrl); pagingLinkBuilder.AddCssClass("paging"); pagingLinkBuilder.SetInnerText((pagingIndexes[i] + 1).ToString()); liBuilder.InnerHtml = pagingLinkBuilder.ToString(); } ulBuilder.InnerHtml += liBuilder.ToString(); } return(MvcHtmlString.Create(ulBuilder.ToString())); }
public static MvcHtmlString GetSortingUrl <T>(this System.Web.Mvc.HtmlHelper html, Paging.PagedResult <T> pagedResult, string propertyName, string url) { string extendedUrl = url .SetParameter("sortColumn", propertyName) .SetParameter("sortDirection", GetSortDirection(pagedResult.Paging, propertyName).ToString()) .SetParameter("pageIndex", "0"); return(MvcHtmlString.Create(extendedUrl)); }