2011-06-14 15 views
5

Es posible agregar una clase CSS a una celda jqGrid usando el método setCell como se muestra a continuación.¿Cómo elimino una clase CSS de una celda jqGrid?

grid.setCell(rowId, "ColumnName", "", "my-style-class"); 

Teniendo en cuenta que este método sólo aparece capaz de añadir clases CSS, ¿cómo se puede eliminar una clase CSS de una célula jqGrid?

Respuesta

11

No se puede eliminar la clase de llamada con un método estándar jqGrid. Así que hay que hacerlo de forma manual:

var iCol = getColumnIndexByName(grid,"ColumnName"), 
    tr = grid[0].rows.namedItem(rowid), // grid is defined as grid=$("#grid_id") 
    td = tr.cells[iCol]; 
$(td).removeClass("my-style-class"); 

donde getColumnIndexByName es una función simple que obtener el índice de la columna por el nombre de la columna:

var getColumnIndexByName = function(grid,columnName) { 
    var cm = grid.jqGrid('getGridParam','colModel'); 
    for (var i=0,l=cm.length; i<l; i++) { 
     if (cm[i].name===columnName) { 
      return i; // return the index 
     } 
    } 
    return -1; 
} 

Ver la demo here.

ACTUALIZADA: Free jqGrid tienen iColByName parámetro interno que puede ser utilizado en lugar de getColumnIndexByName función. El parámetro iColByName se rellenará con jqGrid libre internamente y se actualizará al volver a ordenar las columnas. Por lo tanto, es seguro de usar

var p = grid.jqGrid("getGridParam"), // get the reference to all parameters 
    iCol = p.iColByName["ColumnName"], // get index by column name 
    cm = p.colModel[iCol]; // item of "ColumnName" column 

El camino es muy simple y funciona muy rápido. Se debe tener en cuenta que la función se incluye en la libre jqGrid después de la publicación de jqGrid 4.8 gratis. Así que uno tiene que descargar las últimas fuentes de GitHub o utilizar al menos jqGrid 4.9-beta1 para tener la función.

+0

agradecimiento usted para el código – shv22

+0

@ shv22: ¡De nada! – Oleg

1

Uno puede agregar fácilmente nueva clase a una célula mediante la eliminación de la clase de edad como:

$("#gridname").removeClass('oldclass') 
       .setCell(rowId,'column_name','','newclass'); 

Dónde rowId es id de la fila que contiene celda correspondiente y se puede obtener como:

var ids = $("#gridname").jqGrid('getDataIDs'); 
Cuestiones relacionadas