如何更改jqgrid中唯一的一行背景

时间:2017-12-23 05:50:43

标签: jquery jqgrid row cell background-color

我要更改基于行的列值的背景颜色。

首次加载表时,由rowattr完成。

编辑列后,如何在不重新加载表的情况下根据列更改行背景?

1 个答案:

答案 0 :(得分:1)

已知数据编辑问题。解决方案取决于使用的jqGrid的版本和分支,或者使用的编辑模式。

如果您使用free jqGrid分叉,那么可以使用afterSetRow回调,这将在任何更改行(内联或表单编辑)之后调用。以下代码afterSetRow

afterSetRow: function (options) {
    if (options.localData.closed) {
        $(options.tr).addClass("ui-state-error ui-state-error-text");
    } else {
        $(options.tr).removeClass("ui-state-error ui-state-error-text");
    }
}

可用于rowattr

rowattr: function (item) {
    if (item.closed) {
        return {
            "class": "ui-state-error ui-state-error-text"
        };
    }
}

参见演示https://jsfiddle.net/k5j2ojx2/。您可以尝试编辑内联编辑按钮(fomatter: "actions")的行,通过导航栏的表单编辑或内联编辑按钮(由navGridinlineNav添加)。如果您要更改Closed列的复选框,则行的颜色也会更改。

更新:如果您使用单元格编辑,则应使用afterSaveCell回调。例如,

afterSaveCell: function (rowid, name, value, iRow, iCol) {
    if (name === "closed") {
        if (value === "true") {
            $(this.rows[iRow]).addClass("ui-state-error ui-state-error-text");
        } else {
            $(this.rows[iRow]).removeClass("ui-state-error ui-state-error-text");
        }
    }
}

请参阅https://jsfiddle.net/k5j2ojx2/1/