如何从jqGrid单元格中删除CSS类?

Chr*_*man 5 css jqgrid

可以使用setCell方法将CSS类添加到jqGrid单元格,如下所示.

grid.setCell(rowId, "ColumnName", "", "my-style-class");
Run Code Online (Sandbox Code Playgroud)

考虑到此方法似乎只能添加 CSS类,如何从jqGrid单元格中删除 CSS类?

Ole*_*leg 11

无法使用标准jqGrid方法删除调用类.所以你必须手动完成:

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");
Run Code Online (Sandbox Code Playgroud)

where getColumnIndexByName是一个简单的函数,它通过列名获取列索引:

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;
}
Run Code Online (Sandbox Code Playgroud)

请在此处查看演示.

更新:免费的jqGridiColByName内部参数,可以用来代替getColumnIndexByName功能.该iColByName参数将由内部的空闲jqGrid填充,并将通过重新排列列进行更新.所以使用起来很安全

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
Run Code Online (Sandbox Code Playgroud)

方式非常简单,而且工作非常快.发布免费的jqGrid 4.8 之后,应该考虑到该功能包含在免费的jqGrid中.因此,必须从GitHub下载最新的源代码或至少使用免费的jqGrid 4.9-beta1来获得该功能.