4

我和这个问题有同样的问题

我创建了一个应该与 WebGrid 一起工作的过滤器。过滤器适用于第一页,但如果您尝试转到其他页面或对结果进行排序,过滤器将丢失。我按照上一个问题中的建议将方法更改为 GET,但目标没有得到更新,而是从页面中消失。

div“网格”内的网格调用:

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" }))

如果在 Action 中设置了“过滤器”,我将返回网格的 PartialView 而不是完整的 View。

Firebug 向我显示在响应中发送了正确的 HTML,但无论出于何种原因,它都没有插入到 Grid div 中。

任何建议,将不胜感激!

编辑:我目前的解决方法是使用 HTML 表单而不是 AJAX,但如果可能的话,我想坚持使用 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 中。但是,当我将周围的“我的网格”放在局部视图中时,它起作用了。我不明白为什么,但它现在有效。

索引.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 回答