如何在单据列表中实现自定义搜索原创
金蝶云社区-sharkv
sharkv
6人赞赏了该文章 1860次浏览 未经作者许可,禁止转载编辑于2022年04月15日 11:25:01

关键字:移动单据列表、搜索

一、需求

有同学希望在费用报销单列表增加搜索过滤控件,如:输入单据状态,进而过滤列表数据,但是列表界面上没有这个控件,而且列表界面也加不了控件,该怎么办?

二、思路与方案

由于列表是不能加控件的,所以只能在模板里面加,可以观察到移动列表的列表表单模板是er_reimbursebill_moblist,这个模板上是没有搜索控件的,我们可以考虑继承它,在模板上加个搜索控件,然后在移动列表上绑定继承后的模板。

问:不能用扩展吗?

答:扩展会全局生效,所有绑定该模板的移动列表都会受影响。

三、实现过程

1.继承er_reimbursebill_moblist,得到kded_er_reimbursebill_inh

1.png


图 1

2.加上一个搜索控件并置顶,这里搜索控件的标识是kded_mobilesearchap1,后面的插件里面要用到这个标识。

2.png


图 2

 

3.扩展费用报销单。

3.png

图 3

打开费用报销单移动列表视图,修改列表表单模板为上面继承后的模板标识kded_er_reimbursebill_inh

4.png


图 4

4.绑定插件test.mobilelist.DemoForMobileListSearch

这个插件里面实现了根据搜索框填写的内容进行自定义过滤的逻辑。更个性的过滤需求自行实现,样例只做示范

5.png

图 5

@Override
   public void registerListener(EventObject e) {
      MobileSearch search = this.getControl("kded_mobilesearchap1");
      search.addMobileSearchTextChangeListener(this);
      super.registerListener(e);
   }
   
   @Override
   public void click(MobileSearchTextChangeEvent paramMobileSearchTextChangeEvent) {
      String text = paramMobileSearchTextChangeEvent.getText();
      BillList list = this.getControl("billlistap");
      list.addSetFilterListener(new CustomFilter4Search(text));
      this.getView().updateView("billlistap");
   }
 
 
public class CustomFilter4Search implements SetFilterListener {
  
   private String text = null; 
  
   public CustomFilter4Search(String text) {
      this.text = text;
   }
  
   @Override
   public void setFilter(SetFilterEvent paramSetFilterEvent) {
      QFilter q1 = new QFilter("billstatus",QCP.like,text);
      paramSetFilterEvent.addCustomQFilter(q1);
   }
 
}

 

四、效果图

1.预览

6.png

图 6

2.根据单据状态过滤

7.png

图 7

 

五、开发环境版本

V4.0.0.14

六、参考资料

【开发平台】指导手册

学习成长中心 


赞 6