ASP.Net Разбивка на страницы Ajax сетки просмотра Razor MVC 3.0

#ajax #asp.net-mvc #pagination

#ajax #asp.net-mvc #разбиение на страницы

Вопрос:

Как я могу реализовать Ajax для этой сетки, которая у меня есть?

 @{
var grid = new WebGrid(source: Model, defaultSort: "FirstName", rowsPerPage: 5);
}
@if (Model.Count() > 0)
{
<div id="grid">
    @grid.GetHtml(
 tableStyle: "grid",
 headerStyle: "head",
 alternatingRowStyle: "alt",
 columns: grid.Columns(
 grid.Column("FirstName", "First Name"),
 grid.Column("LastName", "Last Name"),
 grid.Column("Address"),
 grid.Column("DOB"),
 grid.Column("Gender")
 )
    )
</div>
}
  

Я попытался добавить ajaxUpdateContainerId, но он выдает некоторую ошибку.
Я не мог этого понять.

Я создал свою сетку, как показано ниже

 var grid = new WebGrid(canPage: true, rowsPerPage: 2, defaultSort: "FirstName", canSort: true, ajaxUpdateContainerId: "grid");
grid.Bind(Model, rowCount:Model.Count(), autoSortAndPage: false);
grid.Pager(WebGridPagerModes.All);
  

Но он показывает все записи в сетке, где я хочу показать только 5 записей в сетке, а затем подкачку

Ответ №1:

Здесь есть отличная статья на эту темуhttp://www.unboxedsolutions.com/sean/archive/2011/01/23/15964.aspx

 @using AdventureWorks.Common
@using ThisController = MvcDemo.Controllers.GridExampleController
@model GridExampleViewModel

@{ ViewBag.Title = "Index"; }

@{
    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, ContactID = item.ContactID })),
            grid.Column("FullName"),
            grid.Column("Title")
        ));
}
  

Комментарии:

1. Я создал сетку следующим образом: var grid = new WebGrid(canPage: true, rowsPerPage: 2, DefaultSort: «FirstName», canSort: true, ajaxUpdateContainerId: «grid»); сетка. Привязка (модель, количество строк:модель. Count(), autoSortAndPage: false); сетка. Пейджер (WebGridPagerModes.All);

2. Кажется, вы не используете методы skip и take в своей модели. Результаты запроса. Пропустить (страница * записи). Взять (записи)

3. Я сделал что-то вроде этой сетки. Привязка (модель. Возьмите (5), количество строк: модель. Count(), autoSortAndPage: false); в нем перечислены 5 записей из 50, и когда я нажимаю на вторую страницу, все равно отображаются только первые 5 записей

4. Да, для этого потребуется 5 записей из вашей таблицы, пожалуйста, следуйте приведенному мной примеру страницы, вам нужно добавить подкачку в вашу модель.