You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何隐藏子网格「Add Existing」弹窗中的「+ New Record」按钮

问题场景

在父表单中嵌入子网格表单后,点击「Add Existing...」弹出的选择对话框需要隐藏「+ New Record」选项,可通过以下3种方案实现,可根据实际场景选择:
问题界面示意图

方案1:权限控制(无代码,推荐优先使用)

  • 调整当前操作用户所属安全角色的权限,去掉角色对子网格关联实体的「创建」权限即可。只要用户没有该实体的创建权限,对话框不会自动渲染「+ New Record」按钮。

适用场景:该角色用户不需要在任何场景创建子网格对应的实体记录。

方案2:子网格属性配置(低代码)

如果使用的是Power Apps模型驱动应用/Dynamics 365,可直接修改子网格配置:

  1. 进入父表单的编辑界面,双击目标子网格打开属性面板
  2. 切换到「数据源」标签页,取消勾选「允许添加新记录」选项
  3. 保存并发布表单即可生效

注意:该配置会同时隐藏子网格顶部自带的「新建」按钮,如果需要保留子网格的新建能力,不要使用该方案。

方案3:JS脚本注入(灵活适配特殊需求)

如果前两种方案都不符合你的场景,可以通过自定义JS脚本监听弹出框渲染,隐藏目标按钮,参考代码如下:

function hideNewBtnInAddExistingDialog(executionContext) {
    const formContext = executionContext.getFormContext();
    // 替换为你自己的子网格控件名称
    const targetSubgridName = "subgrid_contact";
    const subgridControl = formContext.getControl(targetSubgridName);

    if (!subgridControl) return;

    subgridControl.addOnLoad(() => {
        // 轮询检测弹出框是否渲染完成
        const checkTimer = setInterval(() => {
            const newRecordBtn = document.querySelector("button[aria-label='New Record'], button[data-id='createNewButton']");
            if (newRecordBtn) {
                newRecordBtn.style.display = "none";
                clearInterval(checkTimer);
            }
        }, 200);
        // 3秒后自动销毁定时器避免内存泄漏
        setTimeout(() => clearInterval(checkTimer), 3000);
    });
}
  • 部署步骤:
    1. 将上述代码保存为JS类型的Web资源,上传到你的应用平台
    2. 打开父表单编辑界面,在表单的「OnLoad」事件中绑定上述函数,同时勾选「传递执行上下文作为第一个参数」
    3. 保存发布表单后测试生效。

内容的提问来源于stack exchange,提问作者quan lai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:45:00