实现Repeating Grid行数随输入值自动调整的技术咨询
实现Repeating Grid行随输入数值自动增减的方案
核心思路
监听数值输入控件的变化,对比目标行数与当前网格行数,调用Orbeon内置API自动添加或删除行(包含已有数据的行)。
具体步骤
添加数值控制控件
在Form Builder中新增一个数值输入控件(比如命名为「目标行数」),用于输入需要的网格行数。配置触发动作与脚本
选中这个数值控件,添加「值变化时」的触发动作,在动作中执行以下JavaScript脚本:// 替换为你的Repeating Grid实际ID const gridId = "your-grid-id"; // 获取目标行数,默认值设为0 const targetCount = parseInt(ORBEON.xforms.Document.getValue("目标行数")) || 0; // 获取当前网格已有的行数 const currentCount = ORBEON.xforms.Document.getRepeatItems(gridId).length; // 根据目标数调整行数 if (targetCount > currentCount) { // 不足则添加行 for (let i = 0; i < targetCount - currentCount; i++) { ORBEON.xforms.Document.addRepeatItem(gridId); } } else if (targetCount < currentCount) { // 多余则从最后一行开始删除 for (let i = currentCount - 1; i >= targetCount; i--) { ORBEON.xforms.Document.deleteRepeatItem(gridId, i); } }注意:脚本中的
your-grid-id要替换成你实际使用的Repeating Grid的ID(可在Form Builder的控件设置面板中查看)。辅助设置
可以给数值控件设置最小值(比如0),避免输入负数引发异常。
内容的提问来源于stack exchange,提问作者Pete Atkin
相关产品推荐
相关产品推荐

