2012-10-04 11 views
16

Jak mogę sprawdzić, czy zmiana w ustawie Kendo Grid? Słyszałem, że istnieje właściwość dirty, ale nie mogę jej znaleźć.Jak sprawdzić, czy w Kendo Grid dokonano zmian?

+0

Jeśli ustawiłeś 'batch: true', istnieje zdarzenie' change', które wskazuje, kiedy wystąpi zmiana . –

+0

Po prostu zauważyłem, że musisz zdefiniować schemat źródła danych, jeśli chcesz, aby funkcja hasChanges() działała (lub brudna właściwość pojawiła się na element dataItem). – Misi

Odpowiedz

16

Dodane wiersze będą miały właściwość dirty ustawioną na wartość true, podobnie jak zaktualizowane wiersze. Ale usunięte wiersze są przechowywane gdzie indziej (w kolekcji _destroyed). Przekaż tej funkcji źródło danych sieci, aby sprawdzić, czy ma on zmiany.

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; 
} 
8

Możesz otrzymywać powiadomienia i użyć zdarzenia zmiany w kodzie źródłowym, która będzie występować gdziekolwiek strona/sortowania/grupy/filtr/tworzenie/odczyt/zmiana/usunięcie wpisu.

Aby dołączyć obsługi z niego korzystać:

$('#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 
}) 

Update: Jeśli użytkownik uaktualnił którykolwiek z modeli .hasChanges() metodę DataSource zwróci true.

1

warto spróbować:

var hasDirtyRow = $.grep(gridDataSource.view(), function(e) { return e.dirty === true; }); 
if (hasDirtyRow.length != 0) 
{ 
    // grid has dirty row(s) 
} 
26

Można użyć metody 'hasChanges' na siatce za bazowego DataSource:

grid.dataSource.hasChanges(); 

$('#divGrid').data('kendoGrid').dataSource.hasChanges(); 
+0

to nie będzie, jeśli zaktualizujesz wartość właściwości. czy to? – Gayan

3

grid.dataSource.hasChanges pozwoli Ci wiedzieć, jeśli źródło danych uległa zmianie

      if (datasource.hasChanges() === true) { 
           alert('yes'); 
          } else { 
           alert('no'); 
          } 
Powiązane problemy