2012-01-27 88 views
2

如何使自定义命令更新telerik网格?例如,下面我有一个按钮,通过自定义命令按钮将该行的姓氏更新为Peters。操作方法被调用,但网格未更新。Telerik MVC Grid自定义命令更新网格

@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>); } 
相关问题