Как удалить CSS-класс из ячейки jqGrid?
Можно добавить класс CSS в ячейку jqGrid, используя метод setCell, как показано ниже.
grid.setCell(rowId, "ColumnName", "", "my-style-class");
Учитывая, что этот метод, по-видимому, способен только добавлять CSS-классы, как можно удалить CSS-класс из ячейки jqGrid?
2 ответов:
Нельзя удалить класс вызова с помощью стандартного метода 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");Где
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; }Смотрите демонстрациюЗдесь .
Обновлено: свободные jqGrid имеют внутренний параметр
iColByName, который можно использовать вместо функцииgetColumnIndexByName. ПараметрiColByNameбудет заполнен свободной jqGrid внутренне и он будет обновлен путем перемодерации столбцов. Так что это ... безопасно использоватьСпособ очень прост и работает очень быстро. Следует иметь в виду, что функция включена в free jqGrid после публикации free jqGrid 4.8. Так что нужно скачать последние исходники с GitHub или использовать по крайней мере бесплатный jqGrid 4.9-beta1, чтобы иметь эту функцию.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
Можно легко добавить новый класс в ячейку, удалив старый класс следующим образом:
$("#gridname").removeClass('oldclass') .setCell(rowId,'column_name','','newclass');Где
rowId- идентификатор строки, содержащей соответствующую ячейку, и может быть получен как:var ids = $("#gridname").jqGrid('getDataIDs');
Comments