Как я могу проверить, есть ли Kendo Grid изменения? Я слышал, что есть свойство dirty
, но я не могу его найти.
Как проверить, были ли внесены изменения в Kendo Grid?
Ответ 1
Добавленные строки будут иметь свойство dirty, равное true, и таким образом обновить строки. Но удаленные строки хранятся в другом месте (в коллекции _destroyed). Передайте эту функцию в источник данных вашей сетки, чтобы увидеть, есть ли у нее изменения.
function doesDataSourceHaveChanges(ds)
{
var dirty = false;
$.each(ds._data, function ()
{
if (this.dirty == true)
{
dirty = true;
}
});
if (ds._destroyed.length > 0) dirty = true;
return dirty;
}
Ответ 2
Вы можете использовать метод hasChanges в базовом источнике данных Grid:
grid.dataSource.hasChanges();
$('#divGrid').data('kendoGrid').dataSource.hasChanges();
Ответ 3
Вы можете получить уведомление и использовать событие изменения источника данных, которое будет происходить везде, где вы выполняете страницу/сортируете/группируете/фильтруете/создаете/читаете/обновляете/удаляете запись.
Чтобы прикрепить к нему обработчик, используйте:
$('#YourGrid').data().kendoGrid.dataSource.bind('change',function(e){
//the event argument here will indicate what action just happned
console.log(e.action)// could be => "itemchange","add" or "remove" if you made any changes to the items
})
Обновление: если пользователь обновил любую из моделей, метод .hasChanges() источника данных вернет true.
Ответ 4
grid.dataSource.hasChanges сообщит вам, изменился ли источник данных
if (datasource.hasChanges() === true) {
alert('yes');
} else {
alert('no');
}
Ответ 5
стоит попробовать:
var hasDirtyRow = $.grep(gridDataSource.view(), function(e) { return e.dirty === true; });
if (hasDirtyRow.length != 0)
{
// grid has dirty row(s)
}