如何在移动端实现单据体全选功能原创
金蝶云社区-丨Nick丨
丨Nick丨
3人赞赏了该文章 2380次浏览 未经作者许可,禁止转载编辑于2022年04月16日 09:45:58

关键词:移动分录、

一、需求

在移动端实现单据体全选功能

二、思路与方案

在PC端的单据体已经自带了单据体全勾选的功能,但是在移动端并没有此功能实现,因为移动端大部分的功能都要自己通过插件实现

思路:通过插件获取到单据体的数量,从而获取所需选的行,然后使用单据体控件的行选择方法实现全选

三、实现过程

新建标准的单据带单据体的移动页面即可开始实现 标识:

kdec_entrydemo
  1. 在页面添加按钮

    image.png

  2. 为按钮添加监听事件

  3. 添加卡片选择标志控件

  4. 在click事件中添加实现逻辑

  5. if (StringUtils.equals("buttonap1", key)) {
    			// 获取单据体数据
    			DynamicObjectCollection collection = this.getModel().getEntryEntity("entryentity");
    			// 获取单据体控件数据模型
    			CardEntry grid = this.getView().getControl("entryentity");
    			// 在全选之前向前端发送指令:清除勾选行(很重要,不加会导致全选不生效)
    			((BillView) this.getView()).getClientProxy().invokeControlMethod("entryentity", "clearSelRows");
    			List<Integer> arr = new ArrayList<Integer>();
    			// 获取需要全选的行list
    			for (int i = 0; i < collection.size(); i++) {
    				arr.add(i);
    			}
    			// list转数组
    			int[] arr1 = arr.stream().mapToInt(Integer::valueOf).toArray();
    			// 为单据体行全选
    			grid.selectRows(arr1, 0);
    
    		}

四、效果图

image.png

五、开发环境版本

3.0以上

六、注意事项

注意点:在全选的功能执行前要向前端发送指令清除勾选,否则前端的校验会发现页面已有勾选不会再进行勾选

七、参考资料

开发平台

学习成长中心


赞 3