首页 > 解决方案 > Telerik MVC Grid - 如何添加新记录?

问题描述

我有一个 Telerik Kendo Grid,当我单击一个按钮时,我正在添加一条记录:

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"))
                    )
                )

标签: asp.net-mvcteleriktelerik-gridtelerik-mvc

解决方案


您已将 .Create() 方法注释掉。取消注释并将其指向适当的控制器方法,你应该没问题

取消注释这一行--> //.Create(create => create.Action("GuardarPedido", "Pedidos").Data("ObtenerDatos")) .Update(update => update.Action("GuardarPedido", "Pedidos ").Data("ObtenerDatos")) .Destroy(d => d.Action("ElimnarArticulo", "Pedidos"))

此外,您的 create 方法指向的方法与其下一行的 update 方法相同,因此您需要编辑该方法以指向另一个方法。我无能为力,因为我不知道您的控制器中有哪些方法


推荐阅读