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

如何让N:N关系子网格的+按钮点击时打开创建表单而非查找搜索?

解决N:N子网格+按钮打开创建表单的问题

我完全懂你的困境——明明知道1:N更适配这个场景,但没法修改关系的情况下,默认N:N子网格的+按钮只会弹出查找界面,想改成直接打开新建表单还不小心把按钮搞没了,确实头疼。下面给你两个靠谱的解决方案:

方案1:自定义功能区按钮替换默认按钮

默认的N:N子网格+按钮绑定的是系统自带的“添加现有关联项”命令,直接隐藏这个命令会把整个按钮都干掉,所以我们需要用自定义按钮来替代它:

  • 打开Dynamics 365的解决方案,找到Account实体,进入目标表单的表单编辑器
  • 切换到顶部的功能区标签,定位到子网格对应的功能区组(一般是“子网格操作”这类分组)
  • 点击“新建按钮”,设置按钮的图标、显示文本和原来的+按钮保持一致,让用户看不出区别
  • 给这个自定义按钮绑定一个JavaScript命令,代码逻辑是打开新建Address表单,并且保存后自动关联当前Account:
    function openNewAddressForm() {
        // 获取当前打开的Account记录ID,去掉大括号
        var currentAccountId = Xrm.Page.data.entity.getId().replace(/[{}]/g, "");
        // 打开新建Address实体的表单,传入关联参数
        Xrm.Utility.openEntityForm("new_address", null, {
            // 这里替换成你实际的N:N关系名称 + 主实体ID字段名
            "new_account_new_address_accountid": currentAccountId
        });
    }
    
  • 最后把原来的默认+按钮隐藏,只保留我们自定义的这个按钮

这样用户点击+按钮时,就会直接弹出新建Address的表单,保存后这条地址会自动和当前Account建立N:N关联,完美符合你的需求。

方案2:插件辅助自动关联(备选)

如果不想修改功能区,也可以用插件来补全体验:

  • 保留原来的+按钮,但在子网格上方加个提示文本,告诉用户可以先新建Address再关联
  • 编写一个创建后插件,当用户新建Address时,自动获取当前打开的Account上下文ID,然后自动创建N:N关联记录
    不过这个方案的用户体验不如自定义按钮直接,更适合临时过渡使用。

重要提示

  • 自定义功能区时,要确保按钮的显示条件和原按钮一致(比如只在表单编辑状态下可见)
  • JavaScript代码里的实体名称、关系名称、字段ID都要替换成你系统里的实际值
  • 测试时记得验证:新建Address后,是否能在Account的子网格里看到这条关联记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:46:20