2012-10-04 1 views
16

Comment puis-je vérifier si un Kendo Grid a des changements? J'ai entendu qu'il ya une propriété dirty, mais je ne peux pas le trouver.Comment puis-je vérifier si une grille Kendo a eu des changements qui lui sont faites?

+0

Si vous avez défini 'batch: true', il y a un événement' change' qui indique chaque fois qu'un changement est survenu . –

+0

Il suffit de remarquer que vous devez définir le schéma dataSource si vous voulez que la fonction hasChanges() au travail (ou la propriété sale apparaître sur un DataItem). – Misi

Répondre

16

lignes ajoutées auront la propriété sale définie sur true et ainsi sera mis à jour les lignes. Mais les lignes supprimées sont stockées ailleurs (dans la collection _destroyed). Passez cette fonction la source de données de votre grille pour voir si elle a des changements.

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

Vous pouvez être averti et utiliser l'événement de changement de la source de données qui aura lieu chaque fois que vous la page/trier/groupe/filtre/créer/lecture/mise à jour/Supprimer l'enregistrement.

Pour attacher un gestionnaire à l'utiliser:

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

Mise à jour: Si l'utilisateur a mis à jour l'un des modèles méthode .hasChanges() de la source de données retourne vrai.

1

la peine d'essayer:

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

Vous pouvez utiliser la méthode 'hasChanges' sur le sous-jacent DataSource Grid:

grid.dataSource.hasChanges(); 

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

ce ne sera pas si vous mettre à jour la valeur de la propriété. le fait-il? – Gayan

3

grid.dataSource.hasChanges vous permettra de savoir si la source de données a changé

      if (datasource.hasChanges() === true) { 
           alert('yes'); 
          } else { 
           alert('no'); 
          } 
Questions connexes