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

主控件中的parentFormContext属性是否受官方支持?

关于formContext.parentFormContext的官方支持性说明

formContext.parentFormContext并非微软官方支持的公开API,在Dynamics 365/ Power Apps的官方文档中没有该属性的正式定义,属于未公开的内部实现细节。使用这类未公开属性存在明显风险:后续平台版本更新时,该属性可能被移除、重命名或修改行为,导致你的自定义代码突然失效,且无法获得官方技术支持。

官方推荐的实现方案

要实现“点击快速视图表单子网格的自定义新建按钮,自动填充快速创建表单的父记录查找字段”,应使用微软公开的标准API,通过参数传递的方式完成,具体步骤如下:

1. 自定义按钮的命令逻辑

在子网格的自定义按钮中,通过PrimaryControl获取子网格上下文,进而获取父实体引用,再通过Xrm.Navigation.openForm传递给快速创建表单:

function openChildQuickCreate(primaryControl) {
    const subgrid = primaryControl;
    // 获取快速视图所在父表单的实体引用(官方公开方式)
    const parentEntityRef = subgrid.formContext.data.entity.getEntityReference();

    // 配置快速创建表单参数
    const formOptions = {
        entityName: "child_entity_logical_name", // 替换为你的子实体逻辑名称
        createFromEntity: parentEntityRef, // 传递父实体引用
        windowPosition: 1 // 表单窗口位置,可按需调整
    };

    // 打开快速创建表单
    Xrm.Navigation.openForm(formOptions).then(
        (result) => {
            if (result?.savedEntityReference) {
                // 表单保存后刷新子网格
                subgrid.refresh();
            }
        },
        (error) => {
            console.error("打开快速创建表单失败:", error.message);
        }
    );
}

2. 快速创建表单的自动填充逻辑

当通过createFromEntity参数打开快速创建表单时,平台会自动匹配关联的查找字段并填充值,无需额外编写加载事件代码。如果你的场景需要手动处理(比如自定义字段匹配),可在快速创建表单的加载事件中获取传递的参数:

function onQuickCreateFormLoad(formContext) {
    const createFromEntity = formContext.data.attributes.get("createFromEntity")?.getValue();
    if (createFromEntity) {
        // 手动设置目标查找字段的值
        formContext.getAttribute("parent_lookup_field_logical_name").setValue([createFromEntity]);
    }
}

关键说明

使用Xrm.Navigation.openForm并传递createFromEntity参数是微软官方推荐的标准做法,该API在所有受支持的Dynamics 365/Power Apps版本中都能稳定工作,且后续版本更新时会保持兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:45:11