多级级联查询,通过多选基础资料查出表对应单行数据,插件查询原创
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); } }
推荐阅读