Kendo网格的变化总是返回false

时间:2018-04-07 02:26:15

标签: javascript kendo-ui kendo-grid

我的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实际上就变为真。但不知道为什么以后再次变得虚假。

1 个答案:

答案 0 :(得分:0)

当您对网格中的项目进行更改时,数据源会更新并且hasChanges()将返回true。保存这些更改后,hasChanges()返回false。这是完全正确的,因为保存后,不再有任何变化。该功能有效地指示是否存在未保存的更改,而不是过去是否进行了更改和保存。

您在保存事件函数中看到值为true,因为它在kendo执行其自己的内部保存处理之前立即触发,该处理将hasChanges()设置为false。如果要跟踪是否已进行更改并保存,请在保存事件函数中设置自己的变量。