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

how to change the only one row background in jqgrid

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

首先加载table,由rowattr完成。

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

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

如果你使用 free jqGrid fork,那么可以使用 afterSetRow 回调,它将在 any 改变行(内联或表单)后调用编辑)。 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/。您可以尝试通过导航栏的表单编辑或内联编辑按钮(由 navGridinlineNav 添加)来编辑有关内联编辑按钮 (fomatter: "actions") 的行。如果您要更改 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/