2012-10-04 11 views
16

Wie kann ich überprüfen, ob eine Kendo Grid Änderungen aufweist? Ich habe gehört, dass es eine dirty Eigenschaft gibt, aber ich kann es nicht finden.Wie überprüfe ich, ob ein Kendo Grid Änderungen daran vorgenommen hat?

+0

Wenn Sie 'batch: true' festgelegt haben, gibt es ein' change'-Ereignis, das anzeigt, wann eine Änderung aufgetreten ist . –

+0

Sie haben gerade bemerkt, dass Sie das DataSource-Schema definieren müssen, wenn die hasChanges() - Funktion funktionieren soll (oder die schmutzige Eigenschaft in einem dataItem angezeigt werden soll). – Misi

Antwort

16

Bei den addierten Zeilen wird die Eigenschaft dirty auf true gesetzt und die Zeilen werden aktualisiert. Gelöschte Zeilen werden jedoch an anderer Stelle (in der _destroyed-Auflistung) gespeichert. Übergeben Sie diese Funktion an die Datenquelle Ihres Gitters, um zu sehen, ob es Änderungen gibt.

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

Sie können benachrichtigt, und das Änderungsereignis von der Datenquelle verwendet werden, die, wo immer Sie Seite auftreten/Art/Gruppe/Filter/create/lesen/update/delete Rekord.

Um ein Handler es anfügen:

$('#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: Wenn der Benutzer eines der Modelle .hasChanges() -Methode von der Datenquelle wahr wird wieder aktualisiert.

1

einen Versuch wert:

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

Sie können das ‚haschanges‘ -Methode auf die zugrunde liegenden Datasource des Grid:

grid.dataSource.hasChanges(); 

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

Dies wird nicht, wenn Sie den Eigenschaftswert aktualisieren. macht es? – Gayan

3

grid.dataSource.hasChanges lassen Sie wissen, wenn die Datenquelle geändert hat