mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Adapting Pager shape in Admin to handle huge number of items
- Displaying a window of pages - Adding First and Last page links --HG-- branch : dev extra : transplant_source : %F5%ED%A3%92%40k%AE%E9%87%9Cs%28HF%83%9FM%02%E2%B8
This commit is contained in:
@@ -82,7 +82,6 @@
|
|||||||
userIndex++;
|
userIndex++;
|
||||||
}
|
}
|
||||||
</table>
|
</table>
|
||||||
<span class="hint">@T.Plural("No user found", "{1} users found", (int)Model.Pager.TotalItemCount + 1, (int)Model.Pager.TotalItemCount)</span>
|
|
||||||
@Display(Model.Pager)
|
@Display(Model.Pager)
|
||||||
</fieldset>
|
</fieldset>
|
||||||
}
|
}
|
@@ -1,4 +1,5 @@
|
|||||||
@{
|
@{
|
||||||
|
var window = 7; // number of simultaneously displayed pages
|
||||||
var nextText = HasText(Model.NextText) ? Model.NextText : T(">").Text;
|
var nextText = HasText(Model.NextText) ? Model.NextText : T(">").Text;
|
||||||
var previousText = HasText(Model.PreviousText) ? Model.PreviousText : T("<").Text;
|
var previousText = HasText(Model.PreviousText) ? Model.PreviousText : T("<").Text;
|
||||||
|
|
||||||
@@ -18,13 +19,25 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
var totalPageCount = (int) Math.Ceiling((double) Model.TotalItemCount / Model.PageSize);
|
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("pager");
|
||||||
Model.Classes.Add("group");
|
Model.Classes.Add("group");
|
||||||
var tag = Tag(Model, "ul");
|
var tag = Tag(Model, "ul");
|
||||||
}
|
}
|
||||||
|
<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) {
|
@if (totalPageCount > 1) {
|
||||||
@tag.StartElement
|
@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
|
// previous page
|
||||||
if(Model.Page > 1) {
|
if(Model.Page > 1) {
|
||||||
if (Model.Page == 2 && routeData.ContainsKey("page")) {
|
if (Model.Page == 2 && routeData.ContainsKey("page")) {
|
||||||
@@ -38,7 +51,7 @@
|
|||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
// page numbers
|
// page numbers
|
||||||
for (var p = 1; p <= totalPageCount; p++) {
|
for (var p = firstPage; p <= lastPage; p++) {
|
||||||
<li class="page-@p">
|
<li class="page-@p">
|
||||||
@if (p == Model.Page) {
|
@if (p == Model.Page) {
|
||||||
<span>@p</span>
|
<span>@p</span>
|
||||||
@@ -61,5 +74,12 @@
|
|||||||
@Html.ActionLink((string)nextText, (string)routeData["action"], (string)routeData["controller"], routeData, null)
|
@Html.ActionLink((string)nextText, (string)routeData["action"], (string)routeData["controller"], routeData, null)
|
||||||
</li>
|
</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
|
@tag.EndElement
|
||||||
}
|
}
|
Reference in New Issue
Block a user