jqGrid自定义格式化程序设置单元格不能与options.rowId一起使用

时间:2011-12-20 17:11:56

标签: jqgrid cell formatter

我已经浏览了所有帖子,最后得到了setCell来处理硬编码值,但没有使用options.rowId。

 function StatusFormatter(cellvalue, options, rowObject) {
    if (cellvalue == 'C'){
        jQuery("#list").setCell(options.rowId , 'SOORDLINE', '', { color: 'red' });
        jQuery("#list").setCell("[2.000]", 'SOORDLINE', '', { color: 'red' });
        jQuery("#list").setCell('[2.000]', 'SOREQDATE', '', { color: 'red' });
        jQuery("#list").setCell(options.rowId, 'SOPRICE', '', { color: 'red' });
    }
    return cellvalue;
    };  

第一行和最后一行不起作用,但使用硬编码的rowId DO的2工作。我检查了option.rowId中返回的内容,它们与硬编码值相同,(根据当然行的不同而有所不同。我缺少什么?请帮助。我没有看到行或值之间的任何差异。

编辑 -

我尝试了答案,这似乎是我需要的。我尝试了以下

      { name: 'SOORDLINE', index: 'SOORDLINE', width: 25, search: false ,celattr: function () { return ' style="color: red"'; }
},

在我融入逻辑之前,要让它们全部变红,它对我没有任何作用。

1 个答案:

答案 0 :(得分:1)

抱歉,您以绝对错误的方式使用custom formatter 。自定义格式化程序的目标是提供HTML片段以填充相应列中单元格的内容。因此,{<1}}将在之前被称为,将创建​​id等于StatusFormatter的行。此外,出于性能目的,通常使用options.rowId。在这种情况下,网格的整个内容(网格的整个主体)将首先构造为字符串,并且仅在此之后将在一个操作中放置在网格主体中。它提高了性能,因为在放置任何元素之后,Web浏览器必须重新计算页面上所有其他元素的位置。

如果您想在gridview: true单元格上设置文字颜色,请改为SOORDLINE

cellattr

celattr: function () { return ' style="color: red"'; } 也可以celattr的形式使用,您可以测试celattr: function (rowId, cellValue, rawObject) {...}的属性,它代表任何列的值,并根据单元格返回单元格样式值。

或者,您可以枚举rawObject内的行并在loadComplete元素上设置样式,而不是为每一行设置相同的样式。请参阅the answer作为示例。