jqGrid自定义格式在addClass上失败

我使用自定义格式化程序从json填充新网格,格式化程序已定义:

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

我期待单元格使用css类,但如果我检查单元格,则不添加该类。

您做出了自定义格式化程序使用的典型错误。 重要的是要理解,如果网格包含将被创建为字符串 ,则jqGrid具有最佳性能。 在gridview:true的情况下,为您提供性能。 任何自定义格式化程序都应该在gridview:true模式下工作,因此自定义格式化程序 没有参数是DOM元素,因此您不能使用$(el).addClass("Fail");

在一些旧的答案中(见这里和这里 )你可以找到问题如何解决,但我建议你使用jqGrid 4.0.0的新function: cellattr选项。 对于undefrstanding:自定义格式化程序的目的不是添加一些HTML属性,例如类。 例如,它应该用于将某些通用日期格式(如yyyy-mm-dd)转换为本地化forms,如dd.mm.yyyy(德语风格)。 如果您不想更改列的格式,但只想添加一些属性,title (用于工具提示), class (如您的情况), style等新的cellattr选项就是您所需要的。

在你的情况下,你可以定义

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

在这里看一个小的演示:

在此处输入图像描述

在演示中,我将calsses ui-state-errorui-state-error-text'Client'列的所有单元格中,其中在'Closed'中设置了复选框。