MVC3剃须刀Webgrid分页和排序超过2000条记录

时间:2012-07-30 17:56:53

标签: asp.net-mvc-3 sorting razor paging webgrid

我正在使用类似于提到的here

的网络网格
@{
    var grid = new WebGrid(canPage: true, rowsPerPage: ThisController.PageSize, canSort: true, ajaxUpdateContainerId: "grid");
    grid.Bind(Model.Employees, rowCount: Model.TotalRecords, autoSortAndPage: false);
    grid.Pager(WebGridPagerModes.All);
    @grid.GetHtml(htmlAttributes: new { id="grid" },
        columns: grid.Columns(
            grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { EmployeeID = item.EmployeeID })),
            grid.Column("FullName"),
            grid.Column("Title")
        ));
}

但在我的情况下,我期待超过2000条记录,我想加载每页只加载50条记录,这样页面加载速度会更快。如何确保在加载页面时仅加载前50条记录。当我的用户单击page2时,我想加载下一组50条记录,依此类推。 你们中任何人都有类似的问题,请给我一些示例代码

4 个答案:

答案 0 :(得分:5)

这篇MSDN杂志文章展示了你想要的东西:

Get the Most out of WebGrid in ASP.NET MVC

阅读本节:添加分页和排序

  

如您所见,我们传递的数据包含完整列表   产品(在这个例子中有295个,但不难想象   有更多数据被检索的场景)。作为数据量   返回增加,您对服务的负担越来越大   数据库,同时仍然呈现相同的单页数据。但   有一个更好的方法:服务器端分页。在这种情况下,你拉   仅返回显示当前页面所需的数据(例如,   只有五行)。

答案 1 :(得分:0)

请参阅此链接,它讨论了在webgrid中使用大量数据进行分页的相同问题,以及一个非常棒的解决方案。

Efficient Paging with WebGrid Web Helper

希望这有帮助!

答案 2 :(得分:-1)

@ {     var grid = new WebGrid(canPage:true, rowsPerPage:50 ,canSort:true,ajaxUpdateContainerId:“grid”);

- 代码与您的代码相同

}

只需将 rowsperpage:更改为您想要显示的行数

答案 3 :(得分:-2)

List<WebGridColumn> webGridColumn=new List<WebGridColumn>();
var grid=new WebGrid(source:model,
defaultSort:"stk_code",
rowsPerPage:Model.Count(),
canPage:true,
canSort:true);
webGridColumn.Add(grid.Column("stcode",header:"Stock Code",canSort:false));