Я занимаюсь разработкой веб-приложения с использованием 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 обновляется сам.
Кто-нибудь еще испытывал это, или у кого-нибудь есть хороший совет, что искать?
Спасибо!