如何在单据列表中实现自定义搜索原创
6人赞赏了该文章
2,444次浏览
编辑于2022年04月15日 11:25:01
关键字:移动单据列表、搜索
一、需求
有同学希望在费用报销单列表增加搜索过滤控件,如:输入单据状态,进而过滤列表数据,但是列表界面上没有这个控件,而且列表界面也加不了控件,该怎么办?
二、思路与方案
由于列表是不能加控件的,所以只能在模板里面加,可以观察到移动列表的列表表单模板是er_reimbursebill_moblist,这个模板上是没有搜索控件的,我们可以考虑继承它,在模板上加个搜索控件,然后在移动列表上绑定继承后的模板。
问:不能用扩展吗?
答:扩展会全局生效,所有绑定该模板的移动列表都会受影响。
三、实现过程
1.继承er_reimbursebill_moblist,得到kded_er_reimbursebill_inh
图 1
2.加上一个搜索控件并置顶,这里搜索控件的标识是kded_mobilesearchap1,后面的插件里面要用到这个标识。
图 2
3.扩展费用报销单。
图 3
打开费用报销单移动列表视图,修改列表表单模板为上面继承后的模板标识kded_er_reimbursebill_inh
图 4
4.绑定插件test.mobilelist.DemoForMobileListSearch
这个插件里面实现了根据搜索框填写的内容进行自定义过滤的逻辑。更个性的过滤需求自行实现,样例只做示范
图 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
2.根据单据状态过滤
图 7
五、开发环境版本
V4.0.0.14
六、参考资料
赞 6
6人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读