【发布时间】:2018-06-05 14:47:25
【问题描述】:
我将更改基于行的列值的背景颜色。
第一次加载表格,由rowattr完成。
编辑列后,如何在不重新加载表格的情况下根据列更改行背景?
【问题讨论】:
标签: jquery jqgrid row cell background-color
我将更改基于行的列值的背景颜色。
第一次加载表格,由rowattr完成。
编辑列后,如何在不重新加载表格的情况下根据列更改行背景?
【问题讨论】:
标签: jquery jqgrid row cell background-color
这是数据编辑的已知问题。解决方案取决于 jqGrid 的版本和 fork,使用哪一种,或者使用的编辑模式。
如果您使用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/。您可以尝试通过导航栏的表单编辑或内联编辑按钮(由navGrid和inlineNav添加)来编辑行内编辑按钮(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");
}
}
}
【讨论】:
afterSaveCell。单元格编辑适用于单元格而不是行,它不会调用setRowData(因此也不会调用afterSetRow)。在单元格编辑的情况下,请参阅我的解决方案的 UPDATED 部分答案。