0

我有一个角度应用程序,我试图在 Kendo Grid 中创建批量编辑。我手动将数据添加到网格中,因此不使用数据源的传输机制,而只是调用数据源上的 .data() 。

当我编辑一个单元格时,它会正确触发保存事件,该事件也会传递修改后的数据项,但是当我调用 .toJSON() 以获取模型的原始数据时, .toJSON() 的输出似乎有所不同来自模型本身的输出。就好像 .toJSON() 落后于迭代,因为当我再次编辑单元格时,它是我得到的前一个值。

它的一个例子可以在这里看到:http: //dojo.telerik.com/ujiSu/5

尝试编辑产品名称,然后在控制台中可以看到model的输出和model.toJSON()的输出

我曾尝试在 .toJSON() 之前对数据源调用 .read() ,但这会导致数据源由于某种原因被清空。

我也一直在看模型数据的dirty属性,强制改变它的dirty状态,但也没有任何不同的结果。

我的目标是获取显示在网格和数据源中的原始当前数据。

对此的任何帮助都非常感谢。

4

1 回答 1

0

在网格的保存事件中,模型尚未更新。它将保存事件之后由网格更新(即推送到网格的数据源中) 。这是因为可以通过 e.preventDefault() 取消保存事件。 http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#events-save

因此,e.model 包含 dataSource 项的当前状态,e.values 包含更新的字段,直到保存完成,此时 e.values 中的值被推送到 dataSource 模型中。

您要么需要在网格保存事件中将 e.values 与 e.model 结合起来,要么您可能想要查看 DataSource 更改事件http://docs.telerik.com/kendo-ui/api/javascript/data/datasource #events-change操作是“itemchange”,因为它将在网格保存事件之后发生(只要您没有取消它)。

于 2016-11-04T12:46:47.773 回答