jqGrid rowformatter 基于单独的单元格值

jqGrid rowformatter based on separate cells value

我想根据其中包含的文本更改单个单元格的颜色。该单元格将是一个状态,因此可以是新的、已发送的或已分配的。问题在于此文本值是可翻译的,因此像下面的代码这样的格式化程序将无法正常工作。

function StatusColourFormatter(cellValue, options, rowObject){
    if(cellValue === 'NULL' || cellValue === 'undefined' || cellValue === 'null' || cellValue === null || cellValue === ' ' || cellValue == '&nbsp'){
        cellValue = '';
        return cellValue;
    }
    if(cellValue == "New"){
        rowsNew[rowsNew.length] = options.rowId;
        return cellValue;
        }

     if(cellValue == "Sent"){
        rowsSent[rowsSent.length] = options.rowId;
        return cellValue
        }
     if(cellValue =="Assigned"){
        rowsAssigned[rowsAssigned.length] = options.rowId;
        return cellValue
     }
}

所以我想做的是有一个隐藏的列,值总是英文,但我想更改保存翻译值的单元格的颜色。这可能吗,我将如何去做呢?

单元格的文本颜色或背景颜色可以通过设置单元格的 classstyle 属性(在 <td> 上)来更改。 jqGrid 有 cellattr 回调,这对这里有帮助。了解自定义格式化程序的目标是构建 单元格内容 而不是 单元格属性 很重要。要更改单元格属性,应使用 cellattr.

因此我建议您根据单元格的内容分配不同的 class 属性

cellattr: function (rowId, cellValue) { //, rawObject, cm, item) {
    switch (cellValue) {
        case "New":
            return "class='new_color'";
            break;
        case "Sent":
            return "class='sent_color'";
            break;
        case "Assigned":
            return "class='assigned_color'";
            break;
    }
}

要根据另一项(不是当前 cellValue)的内容设置值,应将 rawObject, cm, item 参数添加到 cellValue 并使用 itemrawObject 对象。在大多数情况下,选择 item 参数并将列名作为 属性 将是免费 jqGrid 的最佳选择。

此外还应该定义CSS规则,它使用类并设置colorbackground-color,例如如下

.new_color {
    background-color: green;
}
.sent_color {
    background-color: yellow;
}
.assigned_color {
    background-color: red;
}
.new_color, .sent_color, .assigned_color {
    background-image: none;
}