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 。界面效果如下:

Canvas

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

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

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

Canvas


第一个按钮,获取选择记录的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中列表的选择全选及针对所选择记录执行操作的主要内容,如果未能解决你的问题,请参考以下文章

表单全选及取消全选

如何使用jquery实现gridview中checkbox(复选框)的全选功能?

easyui combobox 多选及全选 功能

案例:全选与全不选及反选

带有全选选项的 swift 3.0 多项选择

选择/取消选择所有复选框 WIN32