多级级联查询,通过多选基础资料查出表对应单行数据,插件查询原创
金蝶云社区-豹
4人赞赏了该文章 1,042次浏览 未经作者许可,禁止转载编辑于2021年04月27日 08:54:34

举个栗子:需求:老师课程表(关键字段:老师、课程[多选]),一个老师可以授课多门课程,需要根据选择的课程级联出可选老师

/**
 * 课程标识
 **/
private static String COURSE= "kotn_course";
/**
 * 老师标识
 **/
private static String TEACHER= "kotn_teacher";
/**
 * @Author  zb
 * @Description 侦听控件的插件事件
 * @Date 9:34 2021/4/23
 * @Param [e]
 * @return void
**/
@Override
public void registerListener(EventObject e) {
    super.registerListener(e);
    // 侦听F7基础资料字段的事件
    BasedataEdit fieldEdit = this.getView().getControl(COURSE);
    fieldEdit.addBeforeF7SelectListener(this);
}
/**
 * @Author  zb
 * @Description 改造基础资料选项
 * @Date 9:19 2021/4/24
 * @Param [arg0]
 * @return void
**/
@Override
public void beforeF7Select(BeforeF7SelectEvent arg0) {
    //获取属性值
    String fieldKey = arg0.getProperty().getName();
    //获取数据模型
    IDataModel dataModel = this.getModel();
    //根据产品过滤获取模型选择范围
    if (StringUtils.equals(fieldKey, COURSE)){
        //查询模块信息
        DynamicObject teacherObject = (DynamicObject) dataModel.getValue(TEACHER);
        // 生成过滤条件对象QFilter
        // kotn_teacher_base为老师基础资料--精髓在于fbasedataid,必须添加才能关联过滤
        QFilter qFilter = new QFilter("kotn_teacher_base.fbasedataid.id" , QCP.equals,teacherObject.get(ID));
        // 设置列表过滤条件
        ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
        showParameter.getListFilterParameter().setFilter(qFilter);
    }
}


赞 4