dncuug / X.PagedList

Library for easily paging through any IEnumerable/IQueryable in ASP.NET
https://andrew.gubskiy.com/open-source
MIT License
899 stars 213 forks source link

First Page always selected in @Html.PagedListPager #207

Closed bekeer020 closed 7 months ago

bekeer020 commented 3 years ago

I have created pagination for .Net Core 3 project using X.PagedList nuget, when I click on page number it call action that retrieve partial view and update div for data list, all ok but when I click on page number 2 the data in list updated but current page selection is still on 1, it should changed to 2. and every time click on page greater that 1 the selection remain on 1 in PagedListPager.

` @Html.PagedListPager(Model.OrderViewModels, page => Url.Action("OrdersSearch2", "Orders", new { ViewBag.SearchName, page = page }), PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(new PagedListRenderOptions { LiElementClasses = new string[] { "page-item" }, PageClasses = new string[] { "page-link" },

}
, new AjaxOptions()
{
    HttpMethod = "POST",
    UpdateTargetId = "OrdersList",

}))`

OrdersIndexViewModel

` public class OrdersIndexViewModel { public IPagedList OrderViewModels { get; set; } public SearchOrderViewModel SearchOrderViewModel { get; set; }

}`

And my Action in Orders controller

` public ActionResult OrdersSearch2(int? page) { if (!ModelState.IsValid) { return View(mymodel); } OrderSearch ors = new OrderSearch();

    ors.PageNumber = page ?? 1;

    var entitiesList = orderService.FindBy(ors).ToPagedList(ors.PageNumber, 5);

    var model = new OrdersIndexViewModel();
    model.OrderViewModels = entitiesList.ToViewModels();
    return PartialView("_OrdersListPartial", model.OrderViewModels);

}`

Index.cshtml

` @model OrdersIndexViewModel

` _OrdersListPartial.cshtml `@model X.PagedList.IPagedList @{ int rowNo = 0; }
@if (Model == null || Model.Count == 0) {
No Orders
} else {

Orders List

@foreach (var i in @Model) { rowNo = rowNo + 1; }
# ID CUSTOMER NAME CREATED DELIVERY DATE STATUS OPERATORS
@rowNo @ViewBag.OrdersPrefix @i.ID @i.CustomerName @Html.DisplayFor(x => i.CreatedDate) @Html.DisplayFor(x => i.DeliveryDate) @i.OrderStatusText
  • Avatar
  • Avatar
  • Avatar
  • Avatar
@Html.ActionLink("Edit", "EditOrder", "Orders", routeValues: new { ID = i.ID }) @Html.ActionLink("Delete", "DeleteOrderDetailTempItem", "Orders", routeValues: new { ID = i.ID }, htmlAttributes: new { @data_ajax = "true", @data_ajax_method = "Get", @data_ajax_update = "#OrderDetailList", @data_ajax_failure = "onFailureDefault", @data_ajax_success = "ViewOnSuccess", })
}
`
a-gubskiy commented 7 months ago

Sorry, but I can't reproduce the problem. Try publish you example code in any public repository and provide link.