2012-04-20 71 views
3

我与此question具有相同的问题。MVC3 WebGrid在使用过滤器排序或分页后消失

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

一格“网格”内

电网电话:

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中。

任何建议,将不胜感激!

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

回答

3

我得到了这个问题,我有我的周围像的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>