我做了一个简单的操作,我向Web服务请求获取LIST<>特定群体的文章。
然后使用pagedList(并指定所需的页面和页码)当然我指定了我想要的列表的子集。问题是:特定组的文章可以是千例 - 从Web服务获取所有这些信息需要花费大量时间甚至有时粉碎(当文章超过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>
答案 0 :(得分:1)
如果您有权访问WebService,则应该重写.GetArticle()
或者将其替换为.GetPagedArticle()
之类的问题。这个methid应该有所有的分页参数。这是我想的唯一方式。
您的.GetArticle()
方法应返回如下对象:
public class Set<T>
{
public Set()
{
Elements = new List<T>();
}
public Set(List<T> elements, int rowsAll)
{
Elements = elements;
RowsAll = rowsAll;
}
public Set(List<T> elements, int rowsOnPage, int pageSelected, int rowsAll)
{
Elements = elements;
PageSelected = pageSelected;
RowsOnPage = rowsOnPage;
RowsAll = rowsAll;
PagesAll = (rowsAll % RowsOnPage == 0) ? rowsAll / RowsOnPage : rowsAll / RowsOnPage + 1; ;
}
public int RowsOnPage { get; set; }
public List<T> Elements { get; set; }
public int? RowsAll { get; set; }
public int PageSelected { get; set; }
public int PagesAll { get; set; }
}
Elements
应该不是所有元素,而只是分页。