我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),这是我的第480篇原创文章,写于2022年8月29日。
我们知道在表的列表界面(含子网格,主要列表界面)中通过如下方式会打开这条记录的表单(详情页面):
但是有些时候我们不想打开记录的表单,想覆盖这种行为,以前做不到,现在可以了,请参考官方文档:Override the default open behavior of data rows in an entity-bound grid ,但是官方文档写得是手工修改解决方案的customization.xml文件来做,我也有写过类似文章 Dynamics CRM命令栏定制基础知识及手动编辑customization.xml实例,估计做起来稍微麻烦点,我今天也来做下,但是使用RibbonWorkbench,达到的效果是覆盖在列表界面双击或者其他方式打开表单的行为,改成打开一个侧边栏,侧边栏显示一个Custom Page,关于Custom Page可以参考我的博文:在Model-Driven App中使用自定义页面(Custom Page) 。关于列表界面添加按钮的方法可以参考我之前的博文:Dynamics 365定制:在实体的列表界面添加按钮 。
需要在实体的列表命令栏新建一个按钮,记得这个按钮的Id一定要设置为 Mscrm.OpenRecordItem :
这个按钮关联的Command自己新建,为了保险起见,我一般也命名为 Mscrm.OpenRecordItem,这里执行的操作如下:
执行的代码如下,可以参考官方文档:Navigating to a custom page using client API 。
为了让只选择一条记录的时候才可见,我还给这个按钮加了一个Enable Rule如下:
相关资源发布以后,列表界面选择一条记录,就可以看到按钮“查看详情”了,点击就会在右侧
当然拉,通过本文开头提到的三种方法也和点击“查看详情”按钮是一样的效果。那你会问,如果我要打开这个记录的表单呢?选择记录,点击标准的 Edit 按钮即可。
你可能会问,如果我将自己新增的这个“查看详情”按钮一直隐藏,效果还会存在嘛?官方文档说 You can enable or disable the button; doing either will still override the open default behavior.,我们也去实验下。按照 Define custom actions to modify the ribbon 的建议,我添加两个互斥的Display Rule,然后导入并发布。
但是这个做法导致按钮一直隐藏,而且双击打开记录的时候也不会用我定义的新操作代替。囧。
于是我换了一个方法,为这个按钮的增加一个一直会返回False的EntityRule。
然后可以看到,按钮虽然不见了,双击可以执行我定义的操作了,而不是打开记录表单了。