我在我的项目中添加了PagedList,我有一个搜索视图,它基本上调用一个函数从数据库中获取值,我的Pagedlist工作正常,但我不确定这是从数据库获取整个数据还是仅基于pageSize 。例如,我有30个记录,并且我将pagesize添加为10,因此视图将一次显示10条记录和3页。现在这个PagedList获取所有30个值,或者只获得10个第一次,然后如果用户点击第2页,它将获得下一个10个记录。
因为假设我有千条记录,所以我不希望系统加载所有这些记录,我只想根据pagesize加载它,当用户点击第二页时它会得到下一条记录,希望我的观点很明确,下面是我的代码:
查看:
@model PagedList.IPagedList<BackendIntegration.Models.VendorAllTransactions>
@using PagedList.Mvc;
@if (Model != null)
{
<hr />
<div class="form-horizontal">
<table class="table">
<tr class="bg-primary">
<th>
@Html.DisplayName("Date")
</th>
<th>
@Html.DisplayName("Type")
</th>
<th>
@Html.DisplayName("Amount")
</th>
<th>
@Html.DisplayName("User Name")
</th>
<th>
@Html.DisplayName("Vendor Name")
</th>
<th>
@Html.DisplayName("POS ID")
</th>
</tr>
@foreach (var trans in Model)
{
<tr>
<td>
@Html.DisplayFor(model => trans.Date)
</td>
<td>
@Html.DisplayFor(model => trans.TypeDesc)
</td>
<td>
@Html.DisplayFor(model => trans.Amount)
</td>
<td>
@Html.DisplayFor(model => trans.UserName)
</td>
<td>
@Html.DisplayFor(model => trans.VendorName)
</td>
<td>
@Html.DisplayFor(model => trans.POS_ID)
</td>
</tr>
}
</table>
<br />
<div id='Paging' style="text-align: center">
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber)
of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("VendorAllTransactions", new { page }))
</div>
</div>
}
控制器:
public ActionResult VendorAllTransactions(VendorAllTransactionView vw, int? page)
{
int pageSize = 10;
int pageIndex = 1;
pageIndex = page.HasValue ? Convert.ToInt32(page) : 1;
IPagedList<VendorAllTransactions> model = null;
try
{
model = sales.VendorAllTransactions(vw).ToPagedList(pageIndex, pageSize);
}
catch (Exception exp)
{
ModelState.AddModelError("", exp.Message);
}
return View(model);
}
sales.VendorAllTransactions(vw)
这称为查询功能,它将返回记录。但这清楚地归还了所有记录。 Pagedlist只获得所需的行数(pagesize),或者它可以获得所有内容。???
请指教。 感谢