嵌入Canvas App到Dynamics 365 Customer Engagement(Model-Driven App)中,创造更多可能!
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复381或者20191130可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!
有些人说Dynamics 365 Customer Engagement表单的布局比较单一,有没有办法丰富一些呢?以前有人将整个表单换成HTML Web资源来做,工作量大,目前有新的方式了,也相对简单些,来看看怎么做吧。我这里的例子是替换客户实体的Description字段的内容为嵌入的Canvas App,显示客户端的图片,并将Description字段显示为富文本,当然图片和字段值都可以编辑保存。
官方文档请参考 Embed a canvas app on a model-driven form ,本文还参考了 THANURA WIJESIRIWARDENA 的 EMBEDDING A RICH TEXT CONTROLLER TO A FIELD USING A CANVAS APP 。
首先需要在解决方案的经典界面(Dynamics 365>Settings>Solutions)中进行编辑实体的表单,如果你使用的PowerApps的编辑解决方案的新界面,请切换到经典版本。在表单中选中要插入Cavas App的字段,我这里是 Description 字段,然后点击【Change Properties】按钮。

然后切换到【Controls】这个Tab,点击【Add Control...】按钮。是不是有点儿熟悉的味道?是的,可编辑的子网格这里也是这么操作的。

选择【Canvas app】后点击【Add】按钮。

选中【Canvas app】那行的【Web】这个选项后,点击【Customize】这个按钮会打开新的页面。

下图是默认页面的样子,注意有个名称为【ModelDrivenFormIntegration】的Integration,自动设置好了,它的Datasource是表单对应的实体。此外还增加了一个名称为【FromScreen1】的Screen和一个名称为【Form1】的表单,该表单的默认状态(DefualtMode)是编辑(FormMode.Edit)。

首先我来更改表单上显示的字段,选择Form1这个表单后,在右边点击【Edit Fields】链接。

我先点击字段旁边的【...】符号,点击【Remove】菜单项目将其移除,然后再点击【Add field】按钮添加我想要处理的字段。

然后我再添加两个两个字段,一个是【Default Image】,默认的展示类型Image很好不用改,我再添加【Description】,这里我更改展示类型为【Edit Rich Text】,结果如下。

然后我再插入一个按钮。

设置下按钮的文本和样式后,重要的是设置按钮的OnSelect事件(可以理解为按钮的点击事件吧)执行的内容,我这里设置为 SubmitForm(Form1);ModelDrivenFormIntegration.SaveForm();ModelDrivenFormIntegration.RefreshForm(false) ,含义自己搜索下官方文档,主要是保存Canvas App表单中的内容,保存Model-Driven App(Dynamics 365 Customer Engagement)中表单的内容,最后刷新下Model-Driven App(Dynamics 365 Customer Engagement)中的表单。可以看到按钮可以执行多个代码,分号分隔即可。

点击File按钮准备保存.

然后点击【Save】按钮,我这里为为App修改下名字,保存选项记得保持【The Cloud】不变,然后点击【Save】按钮即可。

保存成功后的样子如下,第一次保存会自动发布,以后的保存不会自动发布,若要修改生效还需要发布下。一般还需要点击【Share】按钮分享给要能使用的用户。

这时候再回到表单编辑界面,可以看到App ID已经自动生成了,不要修改,目前修改不起作用,以后会可以修改的。

一般还可以将这个字段的【Display label on the form】取消掉,点击【OK】按钮关闭后,保存并发布该表单,然后刷新页面,我们去看效果。

我修改内容并点击【保存】按钮,会保存成功并且刷新当前表单反映出更改的内容。

那么Description字段中存储的啥内容?我用高级查找拉出来看下,和我猜测的一样,存储了HTML标签加上内容。

图片前面有个提示不好看,怎么办?我目前找到的办法是将提示放到图片后面。修改后保存并发布这个Canvas App,然后就可以看到效果了。

新效果如下:

嵌入Canvas App到Dynamics 365 Customer Engagement(Model-Driven App)中,创造更多可能!的更多相关文章
- 如何让用户登录Dynamics 365 Customer Engagement后自动登录到Unified Interface App?
微软动态CRM专家罗勇 ,回复324或者20190422可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! Dynamics 365 Customer Engagement ...
- Dynamics 365 Customer Engagement导入解决方案时出错:Microsoft.Crm.CrmException: Plug-in assembly does not contain the required types or assembly content cannot be updated.
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- Dynamics 365 Customer Engagement V9.X新引入的自动编号属性介绍
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- Dynamics 365 Customer Engagement中插件的调试
微软动态CRM专家罗勇 ,回复319或者20190319可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 本文主要根据官方的教 ...
- 下载Dynamics 365 Customer Engagement 工具
微软动态CRM专家罗勇 ,回复312或者20190311可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 从Dynamics ...
- Dynamics 365 Customer Engagement安装FAQ
微软动态CRM专家罗勇 ,回复310或者20190308可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 本文参考了包括但不限 ...
- Dynamics 365 Customer Engagement V9 活动源功能报错的解决方法
微软动态CRM专家罗勇 ,回复300或者20190120可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 安装好Dynamic ...
- Dynamics 365 Customer Engagement的标准导入不支持并行导入了吗?
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- 配置基于服务器认证的Dynamics 365 Customer Engagement和SharePoint Online集成
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
随机推荐
- 转:Eclipse中创建Maven版的Web工程(详解)
一.搭建步骤 ♦首先创建一个Maven的Project,如下图: ♦点击Next,勾选 Create a simple project ♦点击Next,注意Packing要选择war,因为我们创建的是 ...
- mysql的安装及命令
1.先检查系统是否装有mysql rpm -qa | grep mysql 2.下载mysql的repo源 wget http://192.168.130.150/mysql5.7.26/my ...
- javascript数据类型和类型转换
一 数据类型 1)typeof 查看数据类型 1.number 数字 取值范围:正无穷 - 负无穷.NaN 正无穷:Number.POSITIVE_INFINITY 负无穷:Number.NEGAT ...
- Java修炼——暂停线程的四个方法
线程的获取方法:Thread.currentThread() 后面可以加上获取线程的名字 .getName() 这样就成功获取到了线程的名字. Sleep会导致当前线程休眠一定 ...
- C# 利用反射更改父类公开对象
需求 : 有一个保存数据库字段的基础类,现在要加个状态返回给前端,但是又不能改基础类: class BaseA { public string Name { get; set; } } class A ...
- 【JS】310- 使用 focusout 事件,解决 iOS 键盘收起不归位问题
点击上方"前端自习课"关注,学习起来~ ,0); } }, 这时,我们问题得到解决了,当从输入框输入内容,然后点击键盘的完成收起键盘,效果符合我 ...
- 深入解析Java反射
因为本人最近正筹备Samsara框架的开发,而其中的IOC部分非常依靠反射,因此趁这个机会来总结一下关于Java反射的一些知识.本篇为基本篇,基于JDK 1.8. 一.回顾:什么是反射? 反射(Ref ...
- java8-从Lamda到方法引用和构造引用
一方法引用概述 经过前面2章Lamda原理引入和Lamda解析,基本就会熟练使用Lamda表达式,这次我们更深入点.来了解一下方法引用. 方法引用是特定Lamda表达式的一种简写,其思路就是能替换La ...
- java程序员面试经历(不忘初心,永不放弃,方得始终)。
其实一直想静下心好好写一点博客,记录下青春,但一直忙于学习,写bug.....转眼间2017只剩下最后几天,岁月无情划过,不留痕迹,唯有稀疏地中海.哈哈,本篇文章主要是想分享下刚毕业入门找工作的一点小 ...
- RabbitMQ之交换机及spring整合
交换机 交换机属性: Name:交换机名称 Type:交换机类型 direct.topic.fanout.headers Durability:是否需要持久化,true为持久化 Auto Delete ...