El formato personalizado jqGrid falla en addClass

Relleno una nueva grilla de json con formateador personalizado el formateador está definido:

testFormatter(value,el,opts) { if (value==0) { $(el).addClass("Fail"); } … } 

Estoy esperando que las celdas usen la clase css, pero si compruebo las celdas, no agregan esa clase.

Hiciste el error típico del uso del formateador personalizado . Es importante comprender que el jqGrid tiene el mejor rendimiento si la cuadrícula contiene se creará como la cadena . En el caso de gridview:true te da el rendimiento. Cualquier formateador personalizado debería funcionar en la vista de gridview:true modo gridview:true , por lo que el formateador personalizado no tiene ningún parámetro que sea elemento DOM y por lo tanto no puede usar operaciones como $(el).addClass("Fail");

En algunas respuestas antiguas (ver aquí y aquí ) puede encontrar cómo se puede resolver el problema, pero le sugiero que use la nueva función de jqGrid 4.0.0: opción cellattr . Para no entender: el propósito del formateador personalizado no es agregar algunos atributos HTML como clase, por ejemplo. Debería usarse, por ejemplo, para convertir un formato de fecha universal como aaaa-mm-dd a una forma localizada como dd.mm.aaaa (estilo alemán). Si no desea cambiar el formato de la columna, pero solo desea agregar algunos atributos como title (usado para información sobre herramientas), class (como en su caso), style , etc., la nueva opción de cellattr es lo que necesita.

En tu caso, puedes definir

 cellattr: function(rowId, cellValue, rawObject, cm, rdata) { if (cellValue==0) { return ' class="Fail"'; } } 

Vea una pequeña demostración aquí :

enter image description here

En la demostración, agregué calsses ui-state-error y ui-state-error-text a todas las celdas de 'Client' columna 'Client' , donde en 'Closed' se establece la checkbox.

    Intereting Posts