我的c#项目中有一个kendo网格,我想检查是否对网格中的项目进行了任何更改。我使用下面的代码来检查它,但它总是返回false。
var data = $("#field-grid").data("kendoGrid");
var hasChanges = data.dataSource.hasChanges();
我的网格
var fieldGrid = $("#field-grid").kendoGrid({
height: 320,
dataSource: fieldDataSource,
selectable: "row",
scrollable: true,
columns: [...],
editable: { mode: "inline", "createAt": "bottom", confirmation: false },
save: function (e) {
dataSource = $("#field-grid").data("kendoGrid").dataSource,
item = dataSource.getByUid(e.model.uid);
item.dirty = true;
}
}).data("kendoGrid");
我在网格save
事件中设置了一个断点,并注意到一旦用户对网格中的项目进行了更改,hasChanges
实际上就变为真。但不知道为什么以后再次变得虚假。
答案 0 :(得分:0)
当您对网格中的项目进行更改时,数据源会更新并且hasChanges()将返回true。保存这些更改后,hasChanges()返回false。这是完全正确的,因为保存后,不再有任何变化。该功能有效地指示是否存在未保存的更改,而不是过去是否进行了更改和保存。
您在保存事件函数中看到值为true,因为它在kendo执行其自己的内部保存处理之前立即触发,该处理将hasChanges()设置为false。如果要跟踪是否已进行更改并保存,请在保存事件函数中设置自己的变量。