4

この質問と同じ問題があります。

WebGrid と一緒に動作するはずのフィルターを作成しました。フィルターは最初のページで機能しますが、別のページに移動したり、結果を並べ替えたりしようとすると、フィルターが失われます。前の質問の提案に従ってメソッドを GET に変更しましたが、ターゲットが更新される代わりに、ページから消えてしまいます。

div "Grid" 内のグリッド呼び出し:

var grid = new WebGrid(Model, ajaxUpdateContainerId: "Grid", rowsPerPage: 20);

フィルター形式:

@using (Ajax.BeginForm("Action", new { filter = "filter" }, new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "Grid", HttpMethod = "Get" }))

アクションに「フィルター」が設定されている場合、フル ビューではなく、グリッドの PartialView を返します。

Firebug は、応答で正しい HTML が送信されていることを示していますが、何らかの理由で Grid div に挿入されていません。

任意の提案をいただければ幸いです!

編集:私の現在の回避策は、AJAX の代わりに HTML フォームを使用することですが、可能であれば AJAX に固執したいと思います。

4

1 に答える 1

4

次のように Webgrid を囲む div があるこの問題の解決策を得ました。

インデックス.cshtml:

<div class="grid-container">
    <div id="my-grid">
        @Html.Partial("_Grid", Model)
    </div>
</div>

_Grid.cshtml:

@{

    var grid = new WebGrid(null, 
        canSort: true, 
        rowsPerPage: 20,
        ajaxUpdateContainerId: "my-grid");

    grid.Bind(Model.Models, autoSortAndPage: true, rowCount: Model.TotalModelCount);
}
[...]

リストで並べ替えると、フィルタリングされた結果で Webgrid が消え、my-grid-div に挿入されませんでした。ただし、周囲の「my-grid」を部分ビュー内に配置すると、機能しました。理由はわかりませんが、現在は機能しています。

インデックス.cshtml:

<div class="grid-container">
    @Html.Partial("_Grid", Model)
</div>

_Grid.cshtml:

<div id="my-grid">
@{

    var grid = new WebGrid(null, 
        canSort: true, 
        rowsPerPage: 20,
        ajaxUpdateContainerId: "my-grid");

    grid.Bind(Model.Models, autoSortAndPage: true, rowCount: Model.TotalModelCount);
}
[...]
</div>
于 2012-09-24T08:52:44.303 に答える