Estoy tratando de actualizar una celda en jqgrid de forma permanente al momento de la carga. Sé que puedo usar setCell
pero eso solo actualiza el valor de esa página. Si vuelvo a la página si no hago explícitamente otro setCell
para la celda, se muestra el valor anterior. También probé setRowData, pero parece que está haciendo lo mismo. Estoy usando el loadonce
ya que mi enfoque es 1) cargar los datos 2) modificar algunos valores de los datos en función de algunos criterios 3) mostrar los valores modificados. Como estoy usando loadonce
, ¿no debería haber una forma de modificar una celda permanentemente en esta sesión?Cómo actualizar el valor de los datos en jqgrid
ACTUALIZACIÓN:
Poner en mi código que no está dando un error pero no para iterar a través de todos los datos:
var set = 0;
....
gridComplete: function(data){
setData();
},
....
beforeRefresh: function(data){
set = 0;
},
....
function setData(){
if(set == 1) return;
... //create hash up here
var dataArray = jQuery("#grid").jqGrid('getGridParam', 'data');
var j = 1;
for (var rows in dataArray) {
var key = dataArray[rows].name;
dataArray[rows].level = hashTable[key];
j++;
}
alert(j);
}
Este no es el ciclismo a través de todos los elementos de la matriz que son localmente cargada . Por ejemplo, si el tamaño de página está establecido en 30, el alert(j)
devuelve 30, a pesar de la cantidad de elementos que he cargado localmente. Sin embargo, si actualizo el gráfico, j es el número correcto. ¿Por qué el comportamiento de getGridParam es diferente en cada caso?
Lo siento, pero no entiendo completamente esto. ¿Cómo hago un 'dataArray [indexes [rowid]]. MyColumn'? sería el código exacto para una columna llamada personName ser: dataArray [indexes [rowid]]. 'personName'? Porque eso causó un error. Además, ¿por qué también tengo que llamar a setCell? Si realmente estoy modificando el conjunto de datos, ¿las representaciones futuras de los datos no mostrarán los nuevos valores? – WildBill
Además, en tu código dices llamar a 'setCell' y luego modificar la matriz de datos. La matriz de datos debería ser mucho más grande que solo las celdas con las que setCell funcionará, ¿correcto? Ya no debería necesitar llamar a setCell cada vez que paso por las páginas, ordenar o filtrar, corregir? – WildBill
@WildBill: 'dataArray [indexes [rowid]]. PersonName' o' dataArray [indexes [rowid]] ['personName'] 'cambiará solo los datos * internal * jqGrid, pero no el contenido del'
Para todos los que vinieron aquí de google, aquí hay una respuesta actualizada!
importante es el índice, que puede obtener llamando al método getInd. Porque rowID! = Índice de localRowData. (Eq rowid:. Jqg204, Índice: 5)
EDIT: si set ": true" en colmodel puede establecer su propia rowid (diversa de mi ejemplo "JQG ###", por lo general una de PK una tabla de base de datos)
hope that helps!
Fuente
2014-07-01 18:23:55 fr4nk
Tuve un problema similar:
Necesitaba actualizar una fila después de una determinada acción del usuario (irrelevante).
Para eso, necesitaba saber la fila exacta del objeto 'datos', incluso después de algunos filtros de la tabla.
así que encontré una manera de identificar qué fila se cambió - añadí una propiedad ROWID para cada elemento del objeto los 'datos', en la 'LoadComplete' caso:
Y ahora, en el formateador de código , Pude acceder a rData.RowID para identificar la fila exacta en la que se tomó la acción, y para obtener/establecer su representación de 'datos'
Fuente
2016-07-11 16:57:02 Alonzzo2
Cuestiones relacionadas