jqGrid自定义格式在addClass上失败

she*_*ski 0 jquery addclass jqgrid

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

testFormatter(value,el,opts)
{
     if (value==0)
     {
          $(el).addClass("Fail");
     }
     …
}
Run Code Online (Sandbox Code Playgroud)

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

Ole*_*leg 6

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

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

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

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

在这里看一个小的演示:

在此输入图像描述

在演示中,我加入calsses ui-state-errorui-state-error-text到的所有细胞'Client',其中在列'Closed'的复选框被设置.