Canvas App中列表的选择全选及针对所选择记录执行操作
Posted luoyong0201
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Canvas App中列表的选择全选及针对所选择记录执行操作相关的知识,希望对你有一定的参考价值。
我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),这是我的第477篇原创文章,写于2022年8月17日。
今天讲解的是一个常见的需求,一个记录列表,可以选择一条或者多条记录,提供全选按钮,可以对选中的记录执行操作,比如批量更新,批量删除等。话不多说,直接上怎么实现的。
首先在屏幕上插入一个垂直的Gallery控件来展示数据,这个Gallery的Items属性我设置为Test Entities,也就是这个实体的数据,每个列的前面增加一个复选框,这个复选框我命名为 chkSelect 。界面效果如下:
然后我增加了一个复选框,不在Gallery里面,命名为chkCheckAll,显示文本为全选。
然后我为Gallery里面的chkSelect复选框的Default属性设置为 If(chkCheckAll.Value,true) 。
再增加几个按钮,如下图所示。
第一个按钮,获取选择记录的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--
以上是关于Canvas App中列表的选择全选及针对所选择记录执行操作的主要内容,如果未能解决你的问题,请参考以下文章