jqGrid rowformatter基于单独的单元格值

时间:2015-12-02 14:53:54

标签: jqgrid free-jqgrid

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

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
     }
}

所以我想做的是有一个隐藏的列,其值始终是英文,但后来我想改变保存翻译值的单元格的颜色。这是可能的,我将如何做到这一点?

1 个答案:

答案 0 :(得分:1)

可以通过在单元格上设置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并使用item或{{ 1}}对象。在大多数情况下,选择rawObject参数并将列名作为属性将是免费jqGrid的最佳选择。

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

background-color