jqGrid自定义格式在addClass上失败

时间:2011-05-18 17:05:13

标签: jquery jqgrid addclass

我从json填充一个新网格 使用自定义格式化程序 格式化器定义为:

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

我期待单元格使用css类 但如果我检查细胞,他们就不会添加该类。

1 个答案:

答案 0 :(得分:6)

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

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

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

style

查看小型演示here

enter image description here

在演示中,我向cellattr列的所有单元格添加了calsses cellattr: function(rowId, cellValue, rawObject, cm, rdata) { if (cellValue==0) { return ' class="Fail"'; } } ui-state-error,其中ui-state-error-text复选框已设置。