Microsoft Dynamics CRM:Option Set选择后自动打开对应Lookup新建记录页面
实现Dynamics CRM 2016账户实体选项集切换时自动打开对应风险评估新建页面
核心思路
监听风险级别选项集的onChange事件,根据选中的风险等级调用CRM原生方法直接打开对应类型的风险评估新建表单,同时关联当前账户记录,配合已有的字段显示/隐藏逻辑完成需求。
步骤与代码实现
确认关键信息
先整理好环境中的实际字段/实体逻辑名称(替换以下占位符):- 风险级别选项集字段逻辑名称:
risklevel - 高风险选项值:
1(按你实际配置的选项值调整) - 低风险选项值:
2(按你实际配置的选项值调整) - 高风险评估Lookup字段逻辑名称:
highriskassessment - 低风险评估Lookup字段逻辑名称:
lowriskassessment - 风险评估实体逻辑名称:
riskassessment
- 风险级别选项集字段逻辑名称:
编写JavaScript函数
创建以下Web资源脚本,替换占位符为实际值:function onRiskLevelChange() { // 获取当前账户记录ID(去除括号) var accountId = Xrm.Page.data.entity.getId().replace(/[{}]/g, ""); // 获取选中的风险级别值 var riskLevelValue = Xrm.Page.getAttribute("risklevel").getValue(); if (!riskLevelValue) return; // 预设关联账户的表单参数 var formParameters = { // 替换为风险评估实体中关联账户的Lookup字段逻辑名称 "accountid": accountId }; // 根据风险级别执行对应操作 switch(riskLevelValue) { case 1: // 高风险 // 若已有UI规则控制显示,可省略此行 Xrm.Page.getControl("highriskassessment").setVisible(true); // 打开高风险评估新建表单 Xrm.Utility.openEntityForm("riskassessment", null, formParameters); break; case 2: // 低风险 // 若已有UI规则控制显示,可省略此行 Xrm.Page.getControl("lowriskassessment").setVisible(true); // 打开低风险评估新建表单 Xrm.Utility.openEntityForm("riskassessment", null, formParameters); break; default: // 无选中值时隐藏两个Lookup字段(可选) Xrm.Page.getControl("highriskassessment").setVisible(false); Xrm.Page.getControl("lowriskassessment").setVisible(false); break; } }部署到CRM表单
- 将代码保存为JavaScript类型的Web资源并发布。
- 打开账户实体表单编辑器,找到风险级别选项集字段。
- 在字段的
事件选项卡中添加onChange事件,选择刚创建的Web资源并指定函数名onRiskLevelChange。 - 保存并发布表单。
注意事项
- 若已通过UI规则配置Lookup字段的显示/隐藏,可删除代码中
setVisible相关行,避免逻辑冲突。 - 确保风险评估实体中关联账户的Lookup字段逻辑名称正确,否则无法自动关联当前账户。
- CRM 2016(v1612)原生支持
Xrm.Utility.openEntityForm和Xrm.Page对象,无需额外兼容处理。
内容的提问来源于stack exchange,提问作者Doogle
相关产品推荐
相关产品推荐

