Kendo Grid Edit取消从Grid中删除行

时间:2015-05-07 07:54:04

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

我有一个剑道网格::

library(dplyr)
library(tidyr)

mydf %>%
  group_by(Length, Gender, Choice) %>%
  summarise(Count = n()) %>%
  spread(Choice, Count)
# Source: local data frame [4 x 5]
# 
#      Length Gender  F I O
# 1    adults      F 10 1 1
# 2    adults      M  7 2 2
# 3 subadults      F  1 8 2
# 4 subadults      M  9 8 4

我在其中使用Javascript作为::

手动添加新行
   @(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"))
                        )
                    )

但问题是当我尝试编辑&amp;编辑时按取消按钮,然后从网格中删除该行。

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

3 个答案:

答案 0 :(得分:6)

问题是当您使用

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

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

dataSource.pushCreate(data)

这实际上做了同样的事情。但是,它还允许您检查_pristineData中更新的旧数据。

我真的希望这有助于某人。我只在kendo文档中的某个地方找到了这个。

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

dataSource.pushDestroy(data)

答案 1 :(得分:0)

您必须返回新插入项目的PassengerID。查看ajax editing documentation

['SalePrice', 'compare', 'operator'=>'>', 'compareValue'=>0]

答案 2 :(得分:0)

必须定义架构的id属性,它在内部被用于了解模型是否为新模型。

请参阅: https://www.telerik.com/forums/inline-editing-cancel-removes-the-row