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

Dynamics表单lookup字段选值变更时联动更新字段及jscript库咨询

Dynamics 365 Lookup变更联动赋值实现方案

完全不需要找重型第三方通用库,自己写一段几十行的轻量工具函数存到解决方案的Web资源里,就能覆盖所有这类简单字段联动需求,比表单设计器拖低代码流程效率高得多,后续同类需求直接传参调用就行,不用重复写逻辑。

可直接复用的通用工具代码

把下面这段代码存为JS文件,作为JScript类型Web资源上传到你的解决方案,所有实体的Lookup联动场景都能复用:

const D365FormUtils = {
    /**
     * Lookup值变更时,自动拉取关联记录指定字段值填充到当前表单字段
     * @param {object} executionContext 表单执行上下文,事件绑定时必须勾选传入执行上下文
     * @param {string} lookupField  当前表单Lookup字段的逻辑名
     * @param {string} sourceField  关联实体上待取值的字段逻辑名
     * @param {string} targetField  当前表单待赋值的字段逻辑名
     */
    syncLookupRelatedField: async function(executionContext, lookupField, sourceField, targetField) {
        const formCtx = executionContext.getFormContext();
        const lookupVal = formCtx.getAttribute(lookupField).getValue();
        
        // Lookup被清空时同步清空目标字段
        if (!lookupVal?.length) {
            formCtx.getAttribute(targetField).setValue(null);
            return;
        }

        const { id, entityType } = lookupVal[0];
        const cleanId = id.replace(/[{}]/g, '');

        try {
            const relatedRecord = await Xrm.WebApi.retrieveRecord(entityType, cleanId, `?$select=${sourceField}`);
            formCtx.getAttribute(targetField).setValue(relatedRecord[sourceField]);
        } catch (e) {
            console.error('关联字段填充失败:', e.message);
            Xrm.Navigation.openErrorDialog({ message: '关联信息自动填充失败,请手动录入' });
        }
    }
}

你当前需求的配置步骤

  • 把上面的JS文件上传为Web资源后,添加到对应实体主表单的表单库列表中,发布
  • 找到表单上的关联Lookup控件,为其添加OnChange事件:
    • 库选择刚才上传的工具JS
    • 函数名填写D365FormUtils.syncLookupRelatedField
    • 必须勾选「将执行上下文作为第一个参数传递」
    • 额外参数按顺序填三个字符串,用逗号分隔:
      • 第一个参数:当前Lookup字段的逻辑名(比如new_relatedid)
      • 第二个参数:关联实体name字段的逻辑名(系统实体通常是name,自定义实体一般是new_name)
      • 第三个参数:当前实体待赋值的name字段逻辑名
  • 保存发布表单即可生效,选中/切换Lookup值时会自动拉取关联记录的name填充到当前记录name字段,清空Lookup时目标字段也会同步清空。

扩展用法

这个工具函数不局限于同步name字段,只要是Lookup关联实体上的单行文本、数字、日期这类基础类型字段,都可以通过传对应字段逻辑名直接实现联动赋值,不需要修改工具代码。如果有多个Lookup需要做同类联动,只需要给对应Lookup重复绑定OnChange事件、传入对应字段参数即可,一次上传全环境所有实体通用。

注意:如果要同步的关联字段是选项集、Lookup这类特殊类型,只需要在拉取数据后加一行类型转换逻辑即可,基础框架不需要调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:18:56