Я разрабатываю веб-приложение с использованием MVC 3 RTM. В представлении у меня есть WebGrid, который отлично работает с сортировкой и пейджингом. Однако мне также требовалась поддержка фильтрации на странице, поэтому я добавил текстовое поле и флажок. Код просмотра выглядит так:
@using (Html.BeginForm("Index", "Customer", FormMethod.Get))
{
<fieldset>
<legend>Filter</legend>
<div class="display-label">
Search for</div>
<div class="display-field">@Html.TextBox("filter", null, new { onchange = "$('form').submit()" })</div>
<div class="display-label">
Show inactive customers?
</div>
<div class="display-field">
@Html.CheckBox("showInactive", false, new { onchange = "$('form').submit()" })
</div>
</fieldset>
var grid = new WebGrid(canPage: true, canSort: true, ajaxUpdateContainerId: "grid", rowsPerPage: 10, defaultSort: "Name");
grid.Bind(Model, rowCount: Model.Count, autoSortAndPage: false);
grid.Pager(WebGridPagerModes.All);
@grid.GetHtml(htmlAttributes: new { id = "grid" },
columns: grid.Columns(
grid.Column("Name", "Name"),
grid.Column("Address", "Address"),
grid.Column("IsActive", "Active", (item) => item.IsActive ? "Yes" : "No")));
}
Это работает нормально, за исключением случаев, когда я устанавливаю флажок. Когда я загружаю страницу в первый раз, флажок не установлен. Сортировка и разбиение по страницам работают, и я могу ввести какой-то текст в качестве фильтра, и он фильтрует мой результат, и после этого сортировка и разбиение по страницам все еще работают. Однако, если я устанавливаю флажок, он обновляет результат, но сортировка больше не работает. Однако фильтр все еще работает, поэтому, если я ввожу какой-либо текст, он правильно фильтрует результат и по-прежнему учитывает флажок.
Я попытался установить точку останова в своем контроллере, и там нет проблем. Запрос отправляется, когда я пытаюсь отсортировать, и контроллер корректно возвращает представление с результатом в качестве модели. Но не похоже, что WebGrid обновляется.
Кто-нибудь еще сталкивался с этим или у кого-нибудь есть хороший совет о том, что искать?
Спасибо!