MVC 3 RTM を使用して Web アプリケーションを開発しています。ビューには、並べ替えとページングで正常に動作する 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 自体が更新されているようには見えません。
他の誰かがこれを経験したことがありますか、または何を探すべきかについて誰か良いアドバイスがありますか?
ありがとう!