У меня есть простые действия, в которых я делаю запрос к веб-сервису, чтобы получить LIST <> статей для определенной группы.PagedList - способ использования не со всей коллекцией
Затем, используя pagedList (и указав желаемую страницу и номер страницы), я, конечно, указываю подмножество этого списка, который я хочу взять. Проблема в том, что статья для конкретной группы может составлять тысячу, например, и получение информации для всех из веб-службы занимает много времени и даже иногда сокрушает (когда статьи выше 1000)
Есть ли там способ получить статьи только для конкретной страницы и по-прежнему использовать pagedList, потому что я вижу, что, к сожалению, нам нужно вызвать метод ToPagedList для всей коллекции.
public virtual ActionResult ImportShow(String id, int? menuID, string articlegroupID, string menuforHistory,int? counter,int?page,int? pageSize,string articleDescr, int? ArticleID)
{
List<WebServiceBeaMenu> standartList = ebServiceBea.GetArticle(Convert.ToInt32(menuID), articlegroupID, "", articleDescr);
IPagedList<WebServiceBeaMenu> p_ProductsShow = standartList.ToPagedList(actualpage,actualPageSize);
p_GroupMenu.ProductMenu = p_ProductsShow;
p_GroupMenu.MenuHistory = p_GetMenuHistory.ToList();
p_GroupMenu.MenuLeft = p_GetMenuLeft.ToList();
return PartialView("ImportShow", p_GroupMenu);
}
}
вот мой взгляд
@model MvcBeaWeb.GroupMenu
@for (int i = 0; i < Model.ProductMenu.Count; i++)
{
<div>
var item = Model.ProductMenu[i];
@Html.PagedListPager(Model.ProductMenu, page => Url.Action("ImportShow", new { id = Model.LanguageName, menuID = @Session["men"], articlegroupID = Session["article"], articleDescr = Session["articleDescr"], pageSize = Session["pageSize"], page }))
</div>
Я не думаю, что это возможно, потому что паллистик действует по всему списку. Что вы можете сделать, это изменить свой вызов в базе данных, чтобы привести только набор статей, которые вы хотите показать. – AnotherGeek
Если вы используете ef или linq2sql, тогда вы можете вернуть IQueryable и сделать pagedlist над этим. Это позволит не выбирать все в первую очередь. – Jamie