Skip to main content

moregeek program

canvas app中列表的选择全选及针对所选择记录执行操作_微软dynamics 365专家的博客-多极客编程

我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),这是我的第477篇原创文章,写于2022年8月17日。

今天讲解的是一个常见的需求,一个记录列表,可以选择一条或者多条记录,提供全选按钮,可以对选中的记录执行操作,比如批量更新,批量删除等。话不多说,直接上怎么实现的。

首先在屏幕上插入一个垂直的Gallery控件来展示数据,这个Gallery的Items属性我设置为'Test Entities',也就是这个实体的数据,每个列的前面增加一个复选框,这个复选框我命名为 chkSelect 。界面效果如下:

Canvas App中列表的选择全选及针对所选择记录执行操作_Dynamics 365

然后我增加了一个复选框,不在Gallery里面,命名为chkCheckAll,显示文本为全选。

然后我为Gallery里面的chkSelect复选框的Default属性设置为 If(chkCheckAll.Value,true) 。

再增加几个按钮,如下图所示。

Canvas App中列表的选择全选及针对所选择记录执行操作_Dynamics 365_02


第一个按钮,获取选择记录的OnSelect属性我设置如下面代码,比较容易理解,就是将选择的记录筛选出来放到一个collection中,然后告知选择了几条记录。

ClearCollect(
colSelected,
Filter(
Gallery3.AllItems,
ThisRecord.chkSelect.Value
)
);
Notify("选择了" & Text(CountRows(colSelected)) & "条记录!");


第二个按钮,批量更新选择的记录的OnSelect属性我设置为如下代码,第一行代码和前面代码类型,筛选出所有的选择记录,第二个用 ​​ForAll​​​ 函数对每个选中的记录做循环处理,ForAll对记录执行的顺序是不定的,这个要注意。使用​​Patch​​​函数来更新记录,这个函数的第二个参数我没有用常用的​​LookUp​​​函数,而是直接指定了要更新记录的主键值,这个免去了查询,性能应该会好些。最后一行代码​​Refresh​​是必须的,否则界面上看不到效果。

ClearCollect(
colSelected,
Filter(
Gallery3.AllItems,
ThisRecord.chkSelect.Value
)
);
ForAll(
colSelected,
Patch(
'Test Entities',
{'Test Entity':ThisRecord.'Test Entity'},
{整数字段: 100}
)
);
Refresh('Test Entities');


第三个按钮,批量移除选择的记录 的OnSelect属性我设置为如下代码,第一行代码还是类似,获取选择的记录,但是这次我加了​​ShowColumns​​​ 函数,这样创建的collection只有一列,这个为后面的​​RemoveIf​​函数的使用创立了好条件,可以使用in这个操作符,代码简单明了。

ClearCollect(
colSelectedForDelete,
ShowColumns(
Filter(
Gallery3.AllItems,
ThisRecord.chkSelect.Value
),
"ly_testentityid"
)
);
RemoveIf(
'Test Entities',
'Test Entity' in colSelectedForDelete
);
Refresh('Test Entities');


我测试了一下,这个发起的还是批量删除,不是删除一条记录发送一次请求,性能不错,我捕获的请求如下:

--batch_8a4613af-586b-4836-93a2-1a548b568827
Content-Type: application/http
Content-Transfer-Encoding: binary

DELETE ly_testentities%2841eea325-f81d-ed11-b83e-000d3a80ba6a%29 HTTP/1.1
Accept: application/json

--batch_8a4613af-586b-4836-93a2-1a548b568827
Content-Type: application/http
Content-Transfer-Encoding: binary

DELETE ly_testentities%2874421a6d-f81d-ed11-b83e-000d3a80ba6a%29 HTTP/1.1
Accept: application/json

--batch_8a4613af-586b-4836-93a2-1a548b568827
Content-Type: application/http
Content-Transfer-Encoding: binary

DELETE ly_testentities%2875421a6d-f81d-ed11-b83e-000d3a80ba6a%29 HTTP/1.1
Accept: application/json

--batch_8a4613af-586b-4836-93a2-1a548b568827--


©著作权归作者所有:来自51CTO博客作者luoyong0201的原创作品,请联系作者获取转载授权,否则将追究法律责任
Canvas App中列表的选择全选及针对所选择记录执行操作
https://blog.51cto.com/luoyong/5587857

在canvas app中实现更加灵活的文件上传_微软dynamics 365专家的博客-多极客编程

我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),这是我的第476篇原创文章,写于2022年8月16日。附件控件的官方文档请参考 ​​Attachments control in Power A

融云 | 企业通讯录的设计与实现_干货云的博客-多极客编程

企业通讯录作为企业统一通信中其它业务功能的触发点,需要灵活、完备的功能和好用、便捷的人机界面,以便用户顺利完成业务协作,真正为企业运转提速,实现降本增效。关注【融云 RongCloud】,了解协同办公平台更多干货。之前,我们已分享过【在“企业通讯录”的盲区,融云的边界与分寸】​​和【云办公时代,企业通讯录的技术选型】。本文将阐述企业级通讯录的设计与实现。需求分析企业通讯录需要提供的基本功能如下:1

使用component library制作一个bar类型的图表_微软dynamics 365专家的博客-多极客编程

我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),这是我的第475篇原创文章,写于2022年8月15日。Component library,就是组件库的意思,可以自己开发一些组件库,里面可以包含

什么是mdm_manageengine it运维服务的博客-多极客编程

MDM或移动设备管理是一种软件应用程序,用于管理企业中的终端,如笔记本电脑、智能手机、平板电脑等。随着越来越多的员工使用这些设备,各种形式和规模的企业现在都转向移动设备管理,以增强数据安全性并提高生产力。 MDM是什么意思 移动设备管理(MDM)是管理移动设备的所有内容的过程。MDM包括存储有关移动设备的基本信息、决定设备上可以存在哪些应用、定位设备,以及在设备丢失或被盗时保护设备。许多企业使用第

在model-driven app中使用自定义页面(custom page)_微软dynamics 365专家的博客-多极客编程

我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),这是我的第478篇原创文章,写于2022年8月24日。这个文章不是以前我写的博文 ​​嵌入Canvas App到Model-Driven App

定制列表界面打开记录的行为以便执行自定义操作的示例_微软dynamics 365专家的博客-多极客编程

我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),这是我的第480篇原创文章,写于2022年8月29日。我们知道在表的列表界面(含子网格,主要列表界面)中通过如下方式会打开这条记录的表单(详情页

在canvas app中实现更加灵活的文件上传_微软dynamics 365专家的博客-多极客编程

我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),这是我的第476篇原创文章,写于2022年8月16日。附件控件的官方文档请参考 ​​Attachments control in Power A

使用component library制作一个bar类型的图表_微软dynamics 365专家的博客-多极客编程

我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),这是我的第475篇原创文章,写于2022年8月15日。Component library,就是组件库的意思,可以自己开发一些组件库,里面可以包含

microsoft dataverse中各种不同行为的日期时间字段的效果实践_微软dynamics 365专家的博客-多极客编程

我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复473或者20220808可方便获取本文,同时可以在第一间得到我

在model-driven app中使用自定义页面(custom page)_微软dynamics 365专家的博客-多极客编程

我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),这是我的第478篇原创文章,写于2022年8月24日。这个文章不是以前我写的博文 ​​嵌入Canvas App到Model-Driven App

定制列表界面打开记录的行为以便执行自定义操作的示例_微软dynamics 365专家的博客-多极客编程

我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),这是我的第480篇原创文章,写于2022年8月29日。我们知道在表的列表界面(含子网格,主要列表界面)中通过如下方式会打开这条记录的表单(详情页

定制现代命令按钮(modern commands)示例_微软dynamics 365专家的博客-多极客编程

我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),这是我的第481篇原创文章,写于2022年8月31日。以前我们常使用Ribbon Workbench来定制命令栏,不过以前的命令栏被成为经典命令