2012-01-27 21 views
2

どのようにカスタムコマンドをtelerikグリッドに更新しますか?たとえば、私はカスタムコマンドボタンを介してPetersへの行の姓を更新するボタンがあります。アクションメソッドが呼び出されますが、グリッドは更新されません。Telerik MVCグリッドカスタムコマンド更新グリッド

@Html.Telerik() 
    .Grid(Model) 
    .Name("Grid") 
    .Columns(columns => 
    { 
     columns.Bound(o => o.FirstName); 
     columns.Bound(o => o.LastName); 
     columns.Bound(o => o.Phone); 
     columns.Bound(o => o.State); 
     columns.Command(commands => commands.Custom("Stuff") 
             .Text("Change Name") 
             .DataRouteValues(route => route.Add(o => o.LastName) 
                  .RouteKey("lastName")) 
             .Ajax(true) 
             .Action("Stuff", "Home")); 
    }) 
    .DataBinding(dataBinding => 
    { 
     dataBinding.Server().Select("Index", "Home", new { ajax = ViewData["ajax"] }); 
     dataBinding.Ajax().Select("_Index", "Home").Enabled((bool)ViewData["ajax"]); 
    }) 
    .Scrollable(scrolling => scrolling.Enabled((bool)ViewData["scrolling"])) 
    .Sortable(sorting => sorting.Enabled((bool)ViewData["sorting"])) 
    .Pageable(paging => paging.Enabled((bool)ViewData["paging"])) 
    .Filterable(filtering => filtering.Enabled((bool)ViewData["filtering"])) 
    .Groupable(grouping => grouping.Enabled((bool)ViewData["grouping"])) 
    .Footer((bool)ViewData["showFooter"]); 

アクションメソッド:

[GridAction] 
public ActionResult Stuff(string lastName) 
{ 
    IEnumerable<Person> persons = GetPersons(); 

    persons.First(p => p.LastName == lastName).LastName = "Peters"; 


    return View(new GridModel(persons)); 
} 

答えて

2

はClientEventsへのグリッドに追加します。

.ClientEvents(events => events.OnComplete("onComplete")) 

アクションがスタッフであれば、グリッドを再構築するためにJavaScriptを追加します。

@{ Html.Telerik().ScriptRegistrar().OnDocumentReady(@<text> 
function onComplete(e) { 
    if (e.name == "Stuff") { 
     var $grid = $("#Grid").data("tGrid"); 
     $grid.rebind(); 
    } 
} 
</text>); } 
関連する問題