如何在Dynamics CRM 2016中基于字段/JS函数隐藏原生按钮并关联显示规则?
嘿,我来帮你搞定这两个关于Dynamics CRM 2016原生按钮隐藏的问题——刚好我之前在项目里折腾过类似需求,给你详细捋一捋:
1. 如何根据字段隐藏原生按钮?
主要有两种实用方式,你可以根据需求选择:
- 配置显示规则:适合逻辑简单的场景(比如单字段值判断),不用写代码,通过CRM工作台就能完成配置
- JavaScript控制:适合复杂逻辑(比如多字段组合判断、动态计算值),灵活性更高
2. Dynamics CRM 2016中借助工作台,依据字段变化/JS函数隐藏原生按钮(以保存按钮为例)
完全可行!CRM 2016的解决方案工作台支持通过显示规则关联字段变化或自定义JS函数,来控制原生按钮的显示/隐藏。下面分两种场景一步步操作:
场景A:依据字段值变化隐藏保存按钮
- 打开CRM的解决方案,找到目标实体(比如账户、联系人),进入表单编辑器
- 点击表单编辑器顶部的命令栏,选中「保存」按钮,点击编辑
- 在弹出的命令编辑窗口中,切换到显示规则标签页,点击添加
- 选择字段值规则,点击新建:
- 规则名称:起个直观的名字,比如「状态为已禁用时隐藏保存按钮」
- 字段:选择你要判断的目标字段(比如「状态」)
- 条件:选择对应的判断逻辑(比如「等于」)
- 值:设置触发隐藏的字段值(比如「已禁用」对应的选项值)
- 保存规则后,回到命令编辑窗口,勾选「仅当满足所有规则时显示按钮」——这样当字段值不符合规则时,保存按钮就会自动隐藏
- 保存所有配置,发布解决方案,测试即可
场景B:借助JavaScript函数隐藏保存按钮
如果你的判断逻辑比较复杂,就用自定义JS函数来实现:
- 先写好JS函数,示例如下:
function shouldShowSaveButton(executionContext) { const formContext = executionContext.getFormContext(); // 这里写你的自定义判断逻辑,比如多字段组合判断 const statusValue = formContext.getAttribute("statuscode").getValue(); const isApproved = formContext.getAttribute("new_isapproved").getValue(); // 返回true表示显示按钮,返回false表示隐藏按钮 return !(statusValue === 1 && isApproved === true); }
- 把这个JS文件上传到CRM的Web资源里,记得发布Web资源
- 回到表单编辑器的命令栏编辑窗口(选中保存按钮),切换到显示规则标签页,点击添加
- 选择自定义规则,点击新建:
- 规则名称:比如「通过JS判断控制保存按钮显示」
- 函数名称:输入你写的函数名
shouldShowSaveButton - 一定要勾选「传递执行上下文」,这样函数才能获取表单的字段值
- 保存规则后,勾选「仅当满足所有规则时显示按钮」——函数返回
true时按钮显示,返回false时隐藏 - 保存并发布解决方案,清空浏览器缓存后测试效果
额外注意事项
- 原生按钮的命令栏修改必须在解决方案中操作,别直接修改默认实体,否则配置容易丢失
- 用JS控制时,要确保Web资源已经正确发布,并且表单已经关联了该Web资源
- 测试前记得清空浏览器缓存,避免看不到最新配置
内容的提问来源于stack exchange,提问作者Damkulul




