2014-10-08 113 views
0

我正在使用kendo网格(Angular JS)的web应用程序工作。每次删除或插入操作后,我应该拨打grid.saveChanges()。但在特殊情况下,如kendo grid cancelChanges issue

  1. 插入一条记录并调用的SaveChanges
  2. 然后删除相同的记录,并调用的SaveChanges
  3. 然后拨打电话grid.cancelChanges()

通常它回到最后saveChanges状态,但在我的情况下,它显示删除的行。任何帮助?

回答

0

最后我得到了solution.My问题与独特id.After保存数据我已经改变的ID:当你打电话cancelChanges()存储在_pristineData属性,以便尝试这种解决方法的数据恢复grid.dataSource.data()项。因此,grid.dataSource._pristineData和grid.dataSource._data之间的映射被破坏了。所以我的解决方案是更改grid.dataSource._pristineData的id。现在它的工作。谢谢您。

0

我试过了你在这个演示中说的:http://demos.telerik.com/kendo-ui/grid/editing但它工作正常。

也许只有在您手动拨打saveChanges()时才有效。

var grid= $("#YourGrid").data("kendoGrid"); 
grid.saveChanges(); 
grid.dataSource._pristineData = grid.dataSource._data; 
+0

我认为这个问题与grid.addRow()有关,我手动设置了一个id(grid.dataSource._data [grid.dataSource._data.length - 1] .id = 0;)。问题cancelChanges()。 – user3161958 2014-10-09 06:02:54

+0

所以当你删除你说的那一行时,你在dataSource中添加了哪一行?并且cancelChanges()开始正常工作? – 2014-10-09 09:22:31

+0

我改变了我的代码就像你说的,但使用代码后,如果我在网格中进行任何更改,它也影响grid.dataSource._pristineData而不调用savechanges()。更具体地说,如果在grid.dataSource._data中完成任何更改,它也影响grid.dataSource._pristineData – user3161958 2014-10-09 10:08:48