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>