简体   繁体   中英

Kendo Grid Command.Edit() Not firing to Controller

Problem: When clicking on Update Button it does not call the controller Action. But the same work perfectly fine for Create/Read/Destroy. Anything that i am missing???? Please let me know.

View Code:

@(Html.Kendo().Grid<Model>()
       .Name("XGrid")
       .HtmlAttributes(new { style = "height: 525px;" })
       .Columns(columns =>
       {
           //Columns...

       })
       .Editable(editable => editable.Mode(GridEditMode.InLine))
       .ToolBar(toolbar =>
       {               
               toolbar.Create();               
       })
       .Pageable()
       .Sortable()
       .Scrollable()
       .Filterable()
       .Events(events =>
       {
           events.Edit("onEdit");
           events.Save("onSave");
       })
       .Selectable(selectable => selectable.Type(GridSelectionType.Row))
       .DataSource(dataSource => dataSource
           .Ajax()
           .PageSize(12)
           .ServerOperation(true)
           .Model(model =>
           {
               model.Id(ex => ex.User_ID);                   
           })
           .Update(update => update.Action("UpdateUser", "ViewUser"))
           .Read(read => read.Action("UsersRetreive", "ViewUser"))
           .Create(create => create.Action("CreateUser", "ViewUser"))
       )
    )

Controller Code:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateUser([DataSourceRequest] DataSourceRequest request,Login objUpdate)
    {            
            if (ModelState.IsValid)
            {
                //Saving Code                                      
            }
            else
                return Json(objUpdate);
        }            

对于GridEditMode .Inline,您必须使用toolbar.Save toolbar.Save()来保存数据并点击控制器

Sure, It will not hit until you change event a one letter of any inline cell. It means if you not do modification it will not hit the action.

Try adding the HttpPost attribute to the action method, like this:

[HttpPost]
public ActionResult UpdateUser([DataSourceRequest] DataSourceRequest request,Login objUpdate)
{
}

Kendo is sending a POST and that current method is only accepting GET requests.

Also, make sure that the method is returning:

return Json(objUpdate.ToDataSourceResult(request, ModelState));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM