2012-07-30 73 views
5

排序我使用一個類似於一個的WebGrid提到hereMVC3剃刀的WebGrid分頁和超過2000條記錄

@{ 
    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條記錄,並且當我的用戶單擊頁面2時我想加載下一組50條記錄等等。 任何你遇到了類似的話,請建議我一些示例代碼

回答

4

這個MSDN雜誌文章顯示你想要什麼:

Get the Most out of WebGrid in ASP.NET MVC

閱讀本節:添加分頁和排序

正如您所看到的,我們傳遞的數據包含 產品的完整列表(本例中爲295個,但不難想象 情景會更多數據正在檢索)。隨着返回的數據量增加,您的服務和 數據庫的負載越來越重,同時仍然呈現相同的單頁數據。但是 還有一個更好的方法:服務器端分頁。在這種情況下,您只需將 僅返回顯示當前頁面所需的數據(例如, 只有五行)。

+0

好答案的行數。我想補充的唯一想法是你最終需要兩個數據庫查詢。一個獲取分頁數據(在本例中是5行)以及一個查詢來獲得正確設置分頁的總行數。 – Gromer 2012-07-30 18:04:02

-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)); 
-1

@ { 變種網格=新的WebGrid(canPage:真,rowsPerPage:50,canSort:真,ajaxUpdateContainerId: 「網格」);

-remaining代碼是相同的代碼

}

只是改變rowsperpage:到u要顯示

+0

WebGrid仍然將整個數據集加載到內存中。 – stuartd 2014-08-18 11:43:41