如何在Dynamics 365 CRM中关联特定视图与自定义表单?
实现视图关联特定表单的新建行为
可以实现这个需求,Dynamics 365原生没有直接关联视图与新建表单的配置项,需要通过自定义命令栏按钮+JavaScript逻辑来实现,具体步骤如下:
1. 准备基础信息
- 确认「Contact - Visitor Form」已发布,记录其表单ID(在表单设计器右上角「表单属性」中查看,为一串GUID格式字符)
- 确认「Contact - Visitor」视图的视图ID(在视图设计器「视图属性」中查看,同样为GUID格式字符)
2. 自定义命令栏按钮
- 进入Contact实体的「视图」界面,点击右上角的「命令栏」→「编辑命令栏」→选择「主网格」场景
- 找到默认「新建」按钮,选择「复制」(不建议直接修改默认按钮,避免影响其他场景)
- 给复制后的按钮重命名(比如「新建访客联系人」),设置其仅在「Contact - Visitor」视图可见:
- 在按钮的「显示规则」中添加「视图属性规则」,指定规则关联的视图ID为「Contact - Visitor」的ID
- 给默认「新建」按钮添加显示规则,设置为「视图不等于指定视图」,关联「Contact - Visitor」的视图ID,确保该按钮在访客视图中隐藏
3. 编写JavaScript逻辑实现表单跳转
- 在Contact实体的「Web资源」中新建一个JavaScript文件,添加以下逻辑:
function openVisitorForm() { // 替换为实际的Contact实体逻辑名称、访客表单ID var entityName = "contact"; var visitorFormId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; var formParameters = {}; // 如需给表单字段设置默认值,可在此添加,示例:formParameters["new_visitortype"] = "临时访客"; Xrm.Navigation.openForm({ entityName: entityName, formId: visitorFormId, createFromEntity: null, entityId: null, formParameters: formParameters }); } function openDefaultForm() { // 打开默认主表单 var entityName = "contact"; Xrm.Navigation.openForm({ entityName: entityName }); }
- 发布该Web资源
4. 绑定按钮与JavaScript函数
- 回到命令栏编辑器,给「新建访客联系人」按钮绑定「openVisitorForm」函数
- 确认默认「新建」按钮在其他视图中绑定原有默认新建逻辑,或直接绑定「openDefaultForm」函数
5. 测试与发布
- 发布所有自定义项(视图、表单、命令栏、Web资源)
- 切换到「Contact - Visitor」视图,点击新建按钮,验证是否打开「Contact - Visitor Form」
- 切换到其他视图(如「Active Contacts」),点击新建按钮,验证是否打开默认主表单
补充说明
- 如果需要多个视图对应同一个自定义表单,可修改JavaScript逻辑,通过
Xrm.Page.context.getQueryStringParameters().viewid获取当前视图ID,再做分支判断 - 确保操作用户拥有对应表单的访问权限,避免出现权限报错
内容的提问来源于stack exchange,提问作者rahes
相关产品推荐
相关产品推荐

