微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ajax – MVC3 WebGrid在使用过滤器排序或分页后消失

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

@H_404_6@

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

div“Grid”内的网格调用:@H_404_6@

@H_404_6@

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

过滤形式:@H_404_6@

@H_404_6@

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

如果在Action中设置了“filter”,我将返回网格的PartialView而不是完整的View.@H_404_6@

Firebug告诉我在响应中发送了正确的HTML,但无论出于何种原因,它都没有插入到Grid div中.@H_404_6@

任何建议,将不胜感激!@H_404_6@

编辑:我目前的解决方法是使用HTML表单而不是AJAX,但我想尽可能坚持使用AJAX.@H_404_6@

解决方法

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

@H_404_6@

Index.cshtml:@H_404_6@

@H_404_6@

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

_Grid.cshtml:@H_404_6@

@H_404_6@

@{

    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”放在局部视图中时,它起作用了.我不明白为什么,但它现在有效.@H_404_6@

Index.cshtml:@H_404_6@

@H_404_6@

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

_Grid.cshtml:@H_404_6@

@H_404_6@

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

    var grid = new WebGrid(null,rowCount: Model.TotalModelCount);
}
[...]
</div>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐