Вы допустили типичную ошибку использования пользовательского форматера . Важно понимать, что jqGrid имеет лучшую производительность, если сетка, содержащаяся, будет создана как строка . В случае gridview:true
дает вам производительность. Любой пользовательский форматер должен работать в режиме gridview:true
, поэтому пользовательский форматер не имеет параметра , являющегося элементом DOM, и поэтому вы не можете использовать такие операции, как $(el).addClass("Fail");
В некоторых старых ответах (см. здесь и здесь ) вы можете найти, как решить проблему, но я бы предложил использовать новую функцию jqGrid 4.0.0: cellattr
вариант. Для понимания: целью пользовательского форматера не является добавление некоторых атрибутов HTML, таких как class, например. Его следует использовать, например, для преобразования какого-либо универсального формата даты, такого как yyyy-mm-dd, в локализованную форму, такую как dd.mm.yyyy (немецкий стиль). Если вы не хотите изменять формат столбца, но хотите добавить только некоторые атрибуты , например title
(используется для всплывающих подсказок), class
(как в вашем случае), style
и т. Д. на новой опции cellattr
то, что вам нужно.
В вашем случае вы можете определить
cellattr: function(rowId, cellValue, rawObject, cm, rdata) {
if (cellValue==0) {
return ' class="Fail"';
}
}
См. Небольшую демонстрацию здесь :
В демоверсии я добавил calsses ui-state-error
и ui-state-error-text
во все ячейки столбца 'Client'
, где в 'Closed'
установлен флажок.