2011-10-30 11 views
6

Tengo un slickgrid en el que algunas filas están ocultas por un filtro (DataView).obtener datos de filas seleccionadas en slickgrid

Cuando ahora llamo al método getSelectedRows de la grilla obtengo los índices de las filas visiblemente seleccionadas. Pero necesito los datos reales de las filas seleccionadas.

Respuesta

19

Usted debe hacer algo como esto:

var selectedData = [], 
    selectedIndexes; 

selectedIndexes = _grid.getSelectedRows(); 
jQuery.each(selectedIndexes, function (index, value) { 
    selectedData.push(_grid.getData()[value]); 
}); 

En este momento la variable deselectedData contiene los datos de las filas seleccionadas.

+1

Ahhh, grid.getData, que era el método que estaba buscando clic. PERO grid.getData [value] no funcionó Tuve que usar grid.getData(). GetItem (value). – Preli

+0

Disculpe, uso un tenedor de Andrew Child (https://github.com/andrewchilds/SlickGrid) y este código funciona bien en él. – matma

+0

Creo que la diferencia entre 'grid.getData() [value]' y 'grid.getData(). GetItem (value)' se relaciona con el tipo utilizado para el almacenamiento en la grilla: el primero funciona para arreglos, el último para Slick .DataView. Quiero decir, supongo; Podría estar totalmente equivocado, pero pruébalo. –

1

También puede utilizar esta línea en el bucle .Cada para tirar de los datos de la DATAVIEW en lugar de utilizar getData() del objeto de cuadrícula, ya que parece ser incompatible dependiendo del tenedor:

var selectedData = [], 
    selectedIndexes; 

selectedIndexes = _grid.getSelectedRows(); 
jQuery.each(selectedIndexes, function (index, value) { 
    selectedData.push(_dataView.getItemById(value)); 
}); 
+2

En realidad, creo que te gustaría usar getItemByIdx, no getItemById. getItemByIdx obtendrá los datos por índice, mientras que getItemById obtiene los datos por el ID único que le diste al crear sus datos. Harían lo mismo si el ID que especificó para cada elemento es igual a su índice en la cuadrícula. Sin embargo, en mi caso, no coinciden. Gracias por el código. – dallin

+0

¡No hay problema, hombre! Espero que funcione para usted. – Axle

3

Tiene un error. Necesita ser "getDataItem" y no "getData".

var selectedData = [],enter code here`selectedIndexes; 

selectedIndexes = _grid.getSelectedRows(); 
jQuery.each(selectedIndexes, function (index, value) { 
    selectedData.push(_grid.getDataItem(value)); 
}); 
+0

La solución @matma siempre funciona bien si no está utilizando un DataView. No es realmente un error. Tu solución probablemente sea mejor, ya que siempre funcionará. – idbehold

0

Si accede a la cuadrícula desde otro control como. botón

var selectRow = gridInstance.getSelectedRows(); 
alert(gridInstance.getDataItem(selectRow).columnName) 
1
hObjMarcado = (grid.getSelectedRows()); 
for(var a_id in hObjMarcado) { 
    vres.push(dataview.getItem(hObjMarcado[a_id])); 
    //la opcion getItem obtiene el elemento especifico, 
    //aun con filtro. 
} 
return vres; 
+2

Intente escribir en inglés – Leeor

Cuestiones relacionadas