2011-12-10 1 views
1

MVC3のWebGridで部分的なページ更新を行っていますが、グリッドを$( '#grid').html(data)で更新し、グリッドのcol/linkをクリックすると、その列のマイページgetはCSS以外の形式でグリッドだけでリロードされます。これをどうすれば解決できますか?

Index.cshtml

// ... 
// grid partial view 
<div id="gridview" class="gen">@Html.Partial("_gridPartialView", Model.Data)</div> 

// On button click on main page to get filtered data to new grid 
$.get('@Url.Action("GetFilteredData")', { 'statusFilter': filterstuff }, function (data) { 
    $('#gridview').html(data); 
}); 

_gridPartialView.cshtml

@model IEnumerable<.Models.Data> 
@{   
    var grid = new WebGrid(source: Model, 
    //defaultSort: "DataId", 
      rowsPerPage: 50);      
} 
@grid.GetHtml(
    tableStyle: "webgrid", 
    headerStyle: "head", 
    alternatingRowStyle: "alt", 
    columns: grid.Columns(
    grid.Column("DataId", "Id"), 
    grid.Column("DataName", "Name"), 
    //... 

コントローラのActionResult:で

public ActionResult GetFilteredData(int[] statusFilter) 
{ 
    // Do filtered query on data model 
    return PartialView("_gridPartialView", cvm.Campaigns); 
} 

答えて

3

@grid.GetHtml(
    htmlAttributes: new { id = "grid" }, 
//.. rest of the options here 
) 

とあなたのIndex.cshtml

に以下を追加する:あなたの.GetHtml方法があることを確認してください

var grid = new WebGrid(source: Model, 
    //defaultSort: "DataId", 
    ajaxUpdateCallback: "GridUpdate", 
    ajaxUpdateContainerId: "grid" 
    rowsPerPage: 50); 

:あなたの_gridPartialView.cshtmlは次のようにグリッドの宣言を変更

<script type="text/javascript"> 
    function GridUpdate(data) { 
     $('#gridview').html(data); 
    } 
</script> 
+0

投稿のためのThx。 $$$$ - Spot on! :) – JaJ

+0

QQ、私が気付く一つのことは、グリッドをソートするためのcolリンクをクリックすると、メインのIndex()コール(グリッドにフィットする更新が適用される前)ページ全体の内容で – JaJ

+0

それはあなたが意味するものなのかどうかは分かりませんが、おそらく部分的なビューに次のコードを追加すると修正されるでしょうか? @ { レイアウト= null; } – torm

関連する問題