入门插件开发-列表插件开发-第三节:案例演示——setFilter事件讲解
1.案例二:setFilter事件讲解
场景:
以采购申请单为案例。
- 移除常用过滤条件&取消带组织模板的组织过滤条件
- 添加单据状态=已审核,按单据编号升序排序
涉及事件: setFilter
事件介绍:
事件可以调整过滤条件内容、追加条件,从而影响列表取数。
事件触发时机:
单据列表控件,在构建好取数条件,准备重新取数之前,触发此事件。
功能效果展示1:
功能效果展示2:
关键代码:
@Overridepublic void setFilter(SetFilterEvent e) {super.setFilter(e);//移除常用过滤条件List<QFilter> qFilters = e.getQFilters();Iterator<QFilter> iterator = qFilters.iterator();while (iterator.hasNext()){QFilter next = iterator.next();iterator.remove();}//取消带组织模板的组织过滤条件QFilter mainOrgQFilter = e.getMainOrgQFilter();e.setMainOrgQFilter(null);//添加过滤条件QFilter qFilter = new QFilter("billstatus", QCP.equals,"C");e.getQFilters().add(qFilter);//设置列表排序,如果是多个排序条件可以用逗号分隔e.setOrderBy("billno asc");}
2.案例演示:
①右键点击要创建插件类的包,然后选中新建并点击继承插件——》填写类名——》选择AbstractListPlugin列表插件基类——》点击确定
②继承AbstractListPlugin列表插件基类并实现Plugin插件接口的DemoListPlugin02类
③重写setFilter方法,写入打开列表页面时过滤条件不对列表数据造成影响功能代码
/*** 标准单据列表插件*/
public class DemoListPlugin02 extends AbstractListPlugin implements Plugin {@Overridepublic void setFilter(SetFilterEvent e) {super.setFilter(e);//移除常用过滤条件List<QFilter> qFilters = e.getQFilters();Iterator<QFilter> iterator = qFilters.iterator();while (iterator.hasNext()){QFilter next = iterator.next();iterator.remove();}//取消带组织模板的组织过滤条件QFilter mainOrgQFilter = e.getMainOrgQFilter();e.setMainOrgQFilter(null);//添加过滤条件QFilter qFilter = new QFilter("billstatus", QCP.equals,"C");e.getQFilters().add(qFilter);//设置列表排序,如果是多个排序条件可以用逗号分隔e.setOrderBy("billno asc");}
}
④添加DemoListPlugin02列表插件类
⑤过滤条件不对列表造成影响