diff --git a/frappe/public/js/frappe/form/grid.js b/frappe/public/js/frappe/form/grid.js index dbd8420e2f..c4ef420b8d 100644 --- a/frappe/public/js/frappe/form/grid.js +++ b/frappe/public/js/frappe/form/grid.js @@ -574,7 +574,7 @@ export default class Grid { let grid_row; if (this.grid_rows[ri] && !append_row) { grid_row = this.grid_rows[ri]; - grid_row.doc = d; + grid_row.update_doc(d); grid_row.refresh(); } else { grid_row = new GridRow({ diff --git a/frappe/public/js/frappe/form/grid_row.js b/frappe/public/js/frappe/form/grid_row.js index dd83548873..05b1128ec2 100644 --- a/frappe/public/js/frappe/form/grid_row.js +++ b/frappe/public/js/frappe/form/grid_row.js @@ -53,6 +53,12 @@ export default class GridRow { this.wrapper.appendTo(this.parent); } + update_doc(doc) { + const changed = !this.doc || this.doc !== doc; + this.doc = doc; + if (changed) this.set_docfields(); + } + set_docfields() { if (this.doc && this.parent_df.options) { this.docfields = frappe.meta.get_docfields( @@ -187,8 +193,6 @@ export default class GridRow { ); } refresh() { - this.set_docfields(); - if (this.frm && this.doc) { this.doc = locals[this.doc.doctype][this.doc.name]; }