基础资料如何实现数据过滤和左树过滤原创
金蝶云社区-wbshcy
wbshcy
34人赞赏了该文章 9218次浏览 未经作者许可,禁止转载编辑于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);
}
}
}


四、效果图

当物品分类选择“文纸类”,

 

图片1.png

物品F7选择界面只显示“文纸类”的数据,以及左边的树只显示“文纸类”分类。

图片2.png

五、开发环境版本

V4.0.0.14

、参考资料

【开发平台】指导手册

学习成长中心

赞 34