2012-07-30 18 views
5

estoy usando un WebGrid similar al que se mencionan hereMVC3 paginación de afeitar WebGrid y clasificar con más de 2000 registros

@{ 
    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") 
     )); 
} 

Pero en mi caso estoy esperando más de 2000 registros, quiero cargar sólo el 50 registros que se cargarán en cada página, para que la página se cargue más rápido. ¿Cómo puedo asegurarme de que solo se carguen los primeros 50 registros cuando se carga la página? Y cuando mi usuario hace clic en la página 2, quiero cargar los siguientes 50 conjuntos de registros, y así sucesivamente. Cualquiera de los que se enfrentó algo similar, por favor me sugieren con un código de ejemplo

Respuesta

4

Este artículo MSDN Magazine muestra lo que quiere:

Get the Most out of WebGrid in ASP.NET MVC

leer esta sección: Adición de paginación y Ordenar

Como puede ver, los datos que estamos pasando contienen la lista completa de productos (295 de ellos en este ejemplo, pero no es difícil imaginar escenarios con aún más datos que se recuperan). A medida que la cantidad de datos devuelta aumenta, coloca cada vez más carga en sus servicios y en las bases de datos , mientras sigue representando la misma página de datos. Pero hay un mejor enfoque: paginación del lado del servidor. En este caso, tira de de nuevo solo los datos necesarios para mostrar la página actual (por ejemplo, solo cinco filas).

+0

Buena respuesta. Lo único que creo que agregaría es que terminarás necesitando dos consultas de bases de datos. Uno para obtener los datos paginados (por lo que las 5 filas en este ejemplo), más una consulta para obtener el recuento total de filas para configurar el paginado correctamente. – Gromer

-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

@ { var rejilla = new WebGrid (canPage: true, rowsPerPage: 50, canSort: true, ajaxUpdateContainerId: "rejilla");

código -remaining es el mismo que el código de

}

acaba de cambiar rowsperpage: al número de filas u desea mostrar

+0

WebGrid todavía carga todo el conjunto de datos en la memoria. – stuartd

Cuestiones relacionadas