PagedList MVC根据pagesize从db获取数据

时间:2017-08-12 20:36:35

标签: mysql asp.net-mvc pagedlist

我在我的项目中添加了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),或者它可以获得所有内容。???

请指教。 感谢

0 个答案:

没有答案