【问题标题】:MVC3 WebGrid disappears after sorting or paging with a filterMVC3 WebGrid 在使用过滤器排序或分页后消失
【发布时间】:2012-05-02 12:03:56
【问题描述】:

我遇到了与question 相同的问题。

我创建了一个应该与 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" }))

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

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

任何建议将不胜感激!

编辑:我目前的解决方法是使用 HTML 表单而不是 AJAX,但如果可能的话,我想坚持使用 AJAX。

【问题讨论】:

    标签: ajax asp.net-mvc-3 webgrid


    【解决方案1】:

    我有一个解决这个问题的方法,我的 Webgrid 周围有一个 div,如下所示:

    Index.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 中。但是,当我将周围的“我的网格”放入局部视图时,它起作用了。我不明白为什么,但它现在有效。

    Index.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>
    

    【讨论】:

    • cederlof,这是一种令人困惑和令人沮丧的行为,但我感谢您分享这个答案。
    猜你喜欢
    • 2012-03-03
    • 1970-01-01
    • 2012-04-20
    • 2012-02-15
    • 2013-04-21
    • 1970-01-01
    • 2012-07-28
    • 2014-11-05
    • 2012-01-12
    相关资源
    最近更新 更多