2012-10-04 15 views
16

¿Cómo puedo verificar si un Kendo Grid tiene cambios? Escuché que hay una propiedad dirty, pero no puedo encontrarla.¿Cómo verifico si se han realizado cambios en una rejilla de Kendo?

+0

Si ha configurado 'batch: true', hay un evento' change' que indica cada vez que se produce un cambio . –

+0

Acabo de notar que necesita definir el esquema de fuente de datos si desea que la función hasChanges() funcione (o que la propiedad sucia aparezca en un elemento de datos). – Misi

Respuesta

16

Las filas agregadas tendrán la propiedad sucia establecida en verdadero y también las filas actualizadas. Pero, las filas eliminadas se almacenan en otro lugar (en la colección _destroyed). Pase esta función a la fuente de datos de su grilla para ver si tiene cambios.

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

Usted puede recibir una notificación y utilizar el evento de cambio de la fuente de datos que se producirá siempre que la página/clase/grupo/filtro/crear/leer/actualizar/borrar registro.

Para adjuntar un controlador para que utilice:

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

Actualización: Si el usuario ha actualizado cualquiera de los modelos .hasChanges() de la fuente de datos devolverá true.

1

vale la pena intentarlo:

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

Usted puede utilizar el método '' hasChanges el origen de datos subyacente de la cuadrícula:

grid.dataSource.hasChanges(); 

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

esto no sucederá si actualiza el valor de la propiedad. ¿lo hace? – Gayan

3

grid.dataSource.hasChanges le permitirá saber si la fuente de datos ha cambiado

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