我们可以在C#中实现分页,在ActionResult函数中实现ASP.NET这样的
public ActionResult Index(int? page)
{
Entities db = new Entities();
return View(db.myTable.ToList().ToPagedList(page ?? 1,8 ));
}
如何在JsonResult函数中实现分页,将结果发送到html视图中的ajax?
public JsonResult GetSearchingData(string SearchBy, string SearchValue)
{
var subCategoryToReturn = myList.Select(S => new { Name = S.Name });
return Json(subCategoryToReturn, JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:0)
您可以使用.Skip()跳过前n个元素,使用Take()来获取下n行。
int pageNumber = 0;
int ItemsPerPage= 10;
var Results = db.myTable.ToList().Skip(ItemsPerPage* pageNumber).Take(numberOfObjectsPerPage);
假设每页只需要10个项目。页数将等于
TotalPages = Math.Ceiling(TotalItems/ItemsPerPage); // IF 201 Items then 201/10 ceiling = 21 pages
现在你可以在html中制作分页按钮了。我建议你使用Jquery Pagniation Library https://esimakin.github.io/twbs-pagination/
答案 1 :(得分:0)
不再考虑用户界面并开始考虑数据。
您有一些想要分页的数据。就是这样。暂时忘掉MVC或JSONResult或与数据无关的任何其他内容。
有一点需要注意,您在上面发布的代码:
db.myTable.ToList().ToPagedList(page ??1,8 )
如果你这样做,你的整个表将从数据库返回,然后它将被分页。你想要的只是返回已经分页的数据,所以不是返回100条记录,而是只拿前20条,只返回20条。
此时不要使用ToList(),而是使用类似的东西:
var myData = db.myTable.Skip(pageNumber * pageSize).Take(pageSize)
我没有任何正在运行的代码来检查这一点,但希望您明白这一点,只返回已经分页的数据,因此只返回您将显示的数据,仅此而已。 UI可以发送您单击的页面索引,pageSize可以是存储在appSettings中的预定义数字。例如。