如何在Frappe Webform子表添加新行时打开Quick Entry对话框
实现Frappe Webform子表点击「添加新行」打开Quick Entry对话框
Frappe Webform默认确实不支持子表点击添加行时唤起Quick Entry,得靠自定义客户端脚本实现,步骤如下:
- 打开目标Webform的编辑页面,找到「客户端脚本」字段,填入以下代码:
frappe.web_form.on('onload', function(frm) { // 替换子表的添加新行按钮事件,这里替换成你的子表字段名,比如"items" let addRowBtn = frm.fields_dict.your_child_table_field_name.wrapper.find('.btn-add-row'); addRowBtn.off('click').on('click', function(e) { e.preventDefault(); // 唤起Quick Entry,替换成你的子表对应的Doctype名称 frappe.new_doc('Your Child Doctype Name', { quick_entry: true, parent: frm.doc.name, parenttype: frm.doctype, parentfield: 'your_child_table_field_name' }).then(doc => { // 保存后刷新子表数据 frm.fields_dict.your_child_table_field_name.refresh(); }); }); });
替换代码里的占位符:
your_child_table_field_name:Webform中子表字段的实际名称Your Child Doctype Name:子表对应的Doctype名称
保存Webform,刷新页面测试。点击子表的「添加新行」按钮,就会弹出Quick Entry对话框,填写保存后子表会自动加载新行。
注意事项:
- 确保子表对应的Doctype已经开启了「允许快速录入」选项(在Doctype设置的「高级」标签里)
- 测试时要确保当前用户有该子表Doctype的创建权限
内容的提问来源于stack exchange,提问作者Darshana
相关产品推荐
相关产品推荐

