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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更改jqgrid中唯一的一行背景相关的知识,希望对你有一定的参考价值。

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

在第一次加载表时,它由rowattr完成。

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

答案

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

如果你使用free jqGrid fork,那么可以使用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/

以上是关于如何更改jqgrid中唯一的一行背景的主要内容,如果未能解决你的问题,请参考以下文章

ASP.net MVC 代码片段问题中的 Jqgrid 实现

AlertDialog 更改片段中的背景颜色 [重复]

如何从片段更改 Tablayout 的背景颜色?

jqGrid如何做字段在表全部数据中唯一性函数校验

如何将css应用于jqgrid标题列

使用 Kotlin 更改片段中的按钮背景