Как проверить, были ли внесены изменения в Kendo Grid? - программирование
Подтвердить что ты не робот

Как проверить, были ли внесены изменения в Kendo Grid?

Как я могу проверить, есть ли Kendo Grid изменения? Я слышал, что есть свойство dirty, но я не могу его найти.

4b9b3361

Ответ 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)
}