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-error
和ui-state-error-text
到'Client'
列的所有单元格中,其中在'Closed'
中设置了复选框。