javascript - Kendo Grid Edit Cancel 从网格中删除行

标签 javascript jquery asp.net-mvc kendo-ui kendo-grid

我有一个 Kendo Grid 作为::

   @(Html.Kendo().Grid<Models.PassengerGrid>()
                        .Name("Passenger")
                        .Columns(columns =>
                        {
                            columns.Bound(x => x.PassengerID).Hidden(true);
                            columns.Bound(x => x.Name).Title("Name").Width(500).Encoded(true);
                            columns.Command(command => { command.Edit(); command.Destroy(); });
                        })
                        .Editable(editable => editable.Mode(GridEditMode.InLine))
                        .HtmlAttributes(new { style = "height:430px;" })
                        .DataSource(dataSource => dataSource
                            .Ajax()
                            .PageSize(5)
                            .ServerOperation(true)
                            .Model(model => { model.Id(p => p.PassengerID); })
                            .Read(read => read.Action("PassengerDetailTemplate", "GetData"))
                            .Create(update => update.Action("EditingPopup_Update", "Grid"))
                            .Update(update => update.Action("EditingPopup_Update", "Grid"))
                            .Destroy(update => update.Action("EditingPopup_Destroy", "Grid"))
                        )
                    )

我在其中使用 Javascript as::手动添加新行

                var Grid = $("#Passenger").data("kendoGrid");
                            var datasource = Grid.dataSource;

                            datasource.add({
                                PassengerID: response.PassengerID,
                                Name: response.Name
                            });
                            datasource.sync();

但问题是当我尝试编辑并在编辑时按下取消按钮时,该行会从网格中删除。

我提到了this question link但这个解决方案对我不起作用。

最佳答案

问题是当您使用

添加到数据源时
dataSource.add()

它在内部将一个"new"标志放在项目上。因此,如果您取消该项目,它将被删除。我不知道他们为什么这样做,这是有史以来最愚蠢的事情。要使用取消按钮进行内联编辑,并且您需要即时添加自己的数据,您需要调用

dataSource.pushCreate(data)

这有效地做了同样的事情。但是,它还允许您在 _pristineData 更新时检查旧数据。

我真的希望这对某人有所帮助。我只是从剑道文档中某处的一行中发现了这一点。

remove也是如此。执行此操作的数据源函数是

dataSource.pushDestroy(data)

关于javascript - Kendo Grid Edit Cancel 从网格中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30095022/

相关文章:

javascript - 如何从下拉列表中获取选定的选项并与输入字段相乘

javascript - 使用 Jasmine 2 测试 Promise.then

jquery - 无法从一个特定方向旋转到另一个

javascript - 使用 jQuery 构建动态表单部件

asp.net-mvc - 是否可以在 Razor 表单 block 中嵌套 Razor 部分?

c# - Mvc,授权退回授权用户

javascript - 类型 Promise<void> 不可分配给类型 Promise<customType[]>

javascript - c# 闲置 15 分钟后自动注销

jquery - 我如何获得 div 的宽度,然后使用 jquery 制作动画

javascript - 字符串的粗体部分/向变量添加样式