Telerik MVC网格-如何添加新记录?

时间:2018-07-25 23:24:18

标签: asp.net-mvc telerik telerik-grid telerik-mvc

我有一个Telerik Kendo网格,并且当我单击按钮时要添加一条记录:

var dataSource = $("#GridArticulos").data("kendoGrid").dataSource; 
dataSource.add({ ArticuloId: articuloId, Nombre: nombre, Precio:
precio, Cantidad: cantidad, Total: total }); 
dataSource.sync();

该记录已正确添加到网格,但是当我单击网格上的保存按钮时,什么也没有发生,控制器中的操作没有被调用,我是否需要在网格上进行一些特定的配置?现在有:

@(Html.Kendo().Grid<App.Models.ArticulosListaViewModel>()
                    .Name("GridArticulos")
                    .AutoBind(false)
                    .Columns(columns =>
                    {
                        columns.Bound(c => c.ArticuloId).Width("15%");
                        columns.Bound(c => c.Nombre).Width("35%").ClientFooterTemplate("Total"); ;
                        columns.Bound(c => c.Cantidad).Width("10%").HtmlAttributes(new { style = "text-align:right" });
                        columns.Bound(c => c.Precio).Width("10%").Format("{0:C}").HtmlAttributes(new { style = "text-align:right" });
                        columns.Bound(c => c.Total).Width("10%").Format("{0:C}").HtmlAttributes(new { style = "text-align:right" })
                            .ClientFooterTemplate("<div align=\"right\">#=kendo.format('{0:C}', sum)#</div>");
                        columns.Command(command => command.Destroy()).Width("20%");
                    })
                    .Editable(editable => editable.Mode(GridEditMode.InCell))
                    .ToolBar(toolbar =>
                    {
                        toolbar.Save().SaveText("Crear pedido").CancelText("Cancelar");
                    })                       
                    .Selectable(s => s.Mode(GridSelectionMode.Single).Type(GridSelectionType.Cell))
                    .Scrollable()
                    .Resizable(resize => resize.Columns(true))
                    .HtmlAttributes(new { style = "height:550px", @class = "ra-section" })
                    .DataSource(dataSource => dataSource
                        .Ajax()
                        .Aggregates(aggregates => 
                        {
                            aggregates.Add(p => p.Total).Sum();
                        })
                        .Batch(true)
                        .ServerOperation(false)
                        .Events(events => events.Error("GridArticulos_Error").RequestEnd("GridArticulos_RequestEnd"))
                        .Model(model =>
                        {
                            model.Id(a => a.ArticuloId);
                            model.Field(a => a.Nombre).Editable(false);
                            model.Field(a => a.Cantidad).Editable(false);
                            model.Field(a => a.Precio).Editable(false);
                            model.Field(a => a.Total).Editable(false);
                        })                           
                        //.Create(create => create.Action("GuardarPedido", "Pedidos").Data("ObtenerDatos"))
                        .Update(update => update.Action("GuardarPedido", "Pedidos").Data("ObtenerDatos"))
                        .Destroy(d => d.Action("EliminarArticulo", "Pedidos"))
                    )
                )

1 个答案:

答案 0 :(得分:0)

您已注释掉.Create()方法。取消注释,然后将其指向适当的控制器方法,就可以了

取消注释此行-> //.Create(create => create.Action(“ GuardarPedido”,“ Pedidos”)。Data(“ ObtenerDatos”))                         .Update(update => update.Action(“ GuardarPedido”,“ Pedidos”)。Data(“ ObtenerDatos”))                         .Destroy(d => d.Action(“ EliminarArticulo”,“ Pedidos”))

此外,您的create方法指向的方法与更新方法在其下面一行中的方法相同,因此您需要编辑该方法以指向另一个方法。我不知道该怎么办,因为我不知道您的控制器中有哪些方法