我要更改基于行的列值的背景颜色。
首次加载表时,由rowattr完成。
编辑列后,如何在不重新加载表的情况下根据列更改行背景?
答案 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"
)的行,通过导航栏的表单编辑或内联编辑按钮(由navGrid
和inlineNav
添加)。如果您要更改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");
}
}
}