Files
Orchard/src/Orchard.Web/Themes/TheAdmin/Views/Pager.cshtml
Sebastien Ros f4fd2d3ba1 Maintaining filter after postback, and fixing pager text with no results
--HG--
branch : dev
extra : transplant_source : %9D%83U%F6%AE%DCpT%D1%10%60%E3%5D%3D%89n%C2%60Qa
2011-01-17 07:22:49 -08:00

89 lines
3.1 KiB
Plaintext

@{
var window = 7; // number of simultaneously displayed pages
var nextText = HasText(Model.NextText) ? Model.NextText : T(">").Text;
var previousText = HasText(Model.PreviousText) ? Model.PreviousText : T("<").Text;
var routeData = new RouteValueDictionary(ViewContext.RouteData.Values);
var queryString = ViewContext.HttpContext.Request.QueryString;
if (queryString != null) {
foreach (string key in queryString.Keys) {
if (key != null && !routeData.ContainsKey(key)) {
var value = queryString[key];
routeData[key] = queryString[key];
}
}
}
if (routeData.ContainsKey("id") && !HasText(routeData["id"])) {
routeData.Remove("id");
}
var totalPageCount = (int) Math.Ceiling((double) Model.TotalItemCount / Model.PageSize);
var firstPage = Math.Max(1, (int)Model.Page - (window/2));
var lastPage = Math.Min(totalPageCount, (int)Model.Page + (window/2));
Model.Classes.Add("pager");
Model.Classes.Add("group");
var tag = Tag(Model, "ul");
}
@if (Model.TotalItemCount > 1) {
<span class="page-results">@T("Showing items {0} - {1} of {2}", (Model.Page-1)*(int)Model.PageSize + 1, Math.Min(Model.TotalItemCount, (Model.Page)*(int)Model.PageSize), Model.TotalItemCount)</span>
}
@if (totalPageCount > 1) {
@tag.StartElement
// first
if(firstPage > 1) {
if (routeData.ContainsKey("page")) {
routeData.Remove("page");
}
<li class="page-first">
@Html.ActionLink(T("<<").Text, (string)routeData["action"], (string)routeData["controller"], routeData, null)
</li>
}
// previous page
if(Model.Page > 1) {
if (Model.Page == 2 && routeData.ContainsKey("page")) {
routeData.Remove("page");
}
else {
routeData["page"] = Model.Page - 1;
}
<li class="page-previous">
@Html.ActionLink((string)previousText, (string)routeData["action"], (string)routeData["controller"], routeData, null)
</li>
}
// page numbers
for (var p = firstPage; p <= lastPage; p++) {
<li class="page-@p">
@if (p == Model.Page) {
<span>@p</span>
}
else {
if (p == 1) {
routeData.Remove("page");
}
else {
routeData["page"] = p;
}
@Html.ActionLink(p.ToString(), (string)routeData["action"], (string)routeData["controller"], routeData, null)
}
</li>
}
// next page
if(Model.Page < totalPageCount) {
routeData["page"] = Model.Page + 1;
<li class="page-next">
@Html.ActionLink((string)nextText, (string)routeData["action"], (string)routeData["controller"], routeData, null)
</li>
}
// last page
if(lastPage < totalPageCount) {
routeData["page"] = totalPageCount;
<li class="page-last">
@Html.ActionLink(T(">>").Text, (string)routeData["action"], (string)routeData["controller"], routeData, null)
</li>
}
@tag.EndElement
}