【问题标题】:kendo grid cancelChanges issue剑道网格取消更改问题
【发布时间】:2014-12-03 08:37:50
【问题描述】:

我正在使用剑道网格(Angular JS)开发一个 Web 应用程序。我应该在每次删除或插入操作后调用grid.saveChanges()。但是在特殊场景比如

  1. 插入记录并调用 saveChanges
  2. 然后删除同一条记录并调用 saveChanges
  3. 然后调用grid.cancelChanges()

通常它会回到最后一个 saveChanges 状态,但在我的情况下,它会显示已删除的行。有什么帮助吗?

【问题讨论】:

    标签: javascript user-interface kendo-ui grid kendo-grid


    【解决方案1】:

    我已经尝试过您在此演示中所说的:http://demos.telerik.com/kendo-ui/grid/editing,但它可以正常工作。

    也许它仅在您手动调用saveChanges() 时才有效。调用cancelChanges() 时要恢复的数据存储在_pristineData 属性中,因此请尝试以下解决方法:

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

    【讨论】:

    • 我认为这个问题与 grid.addRow() 有关。我手动设置了一个 id(grid.dataSource._data[grid.dataSource._data.length - 1].id = 0;) .cancelChanges() 有什么问题吗?
    • 所以当你删除你所说的行时,你在 dataSource 中有什么 id 来添加行? cancelChanges() 是否开始正常工作?
    • 我已经像你说的那样更改了我的代码,但是在使用代码之后,如果我在网格中进行了任何更改,它也会影响 grid.dataSource._pristineData 而无需调用 savechanges()。更具体地说,如果在网格中进行了任何更改.dataSource._data 它也会影响 grid.dataSource._pristineData
    • oData服务用于绑定
    • 其实真正的问题是当我调用 grid.saveChanges() 时没有更新 _pristineData。但是手动更新不是正确的解决方法,因为两者的类型不同。
    【解决方案2】:

    最后我得到了解决方案。我的问题与唯一 ID 有关。保存数据后,我更改了 grid.dataSource.data() 项的 ID。因此,grid.dataSource._pristineData 和网格之间的映射.dataSource._data 坏了。所以我的解决方案是更改 grid.dataSource._pristineData 的 id。现在它可以工作了。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多