基础资料如何实现数据过滤和左树过滤原创
35人赞赏了该文章
1.2万次浏览
编辑于2022年12月12日 11:40:45
关键字:基础资料、左树过滤
一、需求
办公用品领用申请单的分录有物品分类和物品(物品是分组基础资料,分组是物品分类)两个基础资料字段,物品基础资料需要根据物品分类进行数据过滤,且物品基础资料的左树只显示已选择的物品分类。
二、思路与方案
基础资料虽然可配置过滤条件,但是配置过滤条件都是固定的,无法实现动态条件的过滤。所以需要通过插件实现基础资料按动态条件过滤的,点击基础资料会触发beforef7Select事件,可在该事件给F7表单传入过滤条件参数实现过滤效果。
三、实现过程
1.表单插件需实现BeforeF7SelectListener,然后给物品基础资料添加beforef7Select事件监听,代码如下:
@Override public void registerListener(EventObject e) { super.registerListener(e); //给物品基础资料添加beforef7Select事件监听 BasedataEdit supplies = this.getControl("kded_supplies"); supplies.addBeforeF7SelectListener(this); }
2.在beforef7Select事件构造过滤条件,然后把过滤条件塞到F7的界面参数,代码如下
@Override public void beforeF7Select(BeforeF7SelectEvent paramBeforeF7SelectEvent) { // TODO Auto-generated method stub if(paramBeforeF7SelectEvent.getProperty().getName().equals("kded_supplies")) { int row = paramBeforeF7SelectEvent.getRow(); if(this.getModel().getValue("kded_suppliestype",row )!=null) { //获取物品分类 DynamicObject kded_suppliestype=(DynamicObject) this.getModel().getValue("kded_suppliestype"); Long typeId = kded_suppliestype.getLong("id"); String number = kded_suppliestype.getString("number"); // 生成过滤条件对象QFilter QFilter qFilter = new QFilter("group.id", QCP.equals, typeId); QFilter treeFilter = new QFilter("number", QCP.equals, number); // 设置F7列表数据过滤条件 ListShowParameter showParameter = (ListShowParameter) paramBeforeF7SelectEvent.getFormShowParameter(); showParameter.getListFilterParameter().getQFilters().add(qFilter); //设置F7列表左树的过滤条件 showParameter.getTreeFilterParameter().getQFilters().add(treeFilter); } } }
四、效果图
当物品分类选择“文纸类”,
物品F7选择界面只显示“文纸类”的数据,以及左边的树只显示“文纸类”分类。
五、开发环境版本
V4.0.0.14
六、参考资料
赞 35
35人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读