如何实现动态地在列表中分页展示第三方系统数据原创
12人赞赏了该文章
2,964次浏览
编辑于2024年02月26日 15:28:54
关键词:列表、第三方数据、分页
一、需求
现在有第三方系统的数据,或者非当前单据的数据,需要展示在列表上,并且实现分页。
二、思路与方案
在列表的beforeCreateListDataProvider事件中,取动态的取数,重写取数的方法。通过setListDataProvider方法将数据写入,其中取数需要继承ListDataProvider并重写getData方法。
三、实现过程
已经存在单据A(kdec_thirdpart)字段有id, billno, billstatus, kdec_textfield
假设第三方数据来自单据A
图1是单据B(kdec_showthirddata),在单据B上展示单据A的数据并模拟第三方数据展示和分页
图1
public class ThirdDataListPlugin extends AbstractListPlugin { @Override public void beforeCreateListDataProvider(BeforeCreateListDataProviderArgs args) { // TODO Auto-generated method stub args.setListDataProvider(new ListDataProvider(){ /** * 加载列表数据 * @remark * 获取系统自动加载的列表数据,然后对内容进行修正 * */ @Override public DynamicObjectCollection getData(int arg0, int arg1) { // 获取数据 DynamicObjectCollection dataCollection = this.getCollection(); //取数据集合中从arg0开始的arg1条数据 DynamicObjectCollection dObjectCollection = this.getStartToEnd(arg0, arg1, dataCollection); //获取查询记录数量 int dataCount = dataCollection.size(); //自己的取数逻辑得到DynamicObjectCollection getQueryResult().setCollection(dObjectCollection); getQueryResult().setDataCount(dataCount); return dObjectCollection; } // 从第start条数据开始获取limit条数据 private DynamicObjectCollection getStartToEnd(int start, int limit, DynamicObjectCollection dCollection) { DynamicObjectCollection data = QueryServiceHelper.query("kdec_thirdpart", "id, billno, billstatus, kdec_textfield", null); int end = start + limit; int size = dCollection.size(); if (size >= end) { for (int i = start; i < end; i++) { data.add(dCollection.get(i)); } } else { for (int i = start; i < size; i++) { data.add(dCollection.get(i)); } } return data; } // 创建30条数据,创建的数据的列需要和列表的列数据对应 private DynamicObjectCollection getCollection() { DynamicObjectCollection dCollection = QueryServiceHelper.query("kdec_thirdpart", "id, billno, billstatus, kdec_textfield", null); for (int i = 0; i < 30; i++) { DynamicObject data1 = dCollection.addNew(); data1.set("billno", "qq" + i); data1.set("kdec_textfield", "文本测试" + i); } return dCollection; } }); super.beforeCreateListDataProvider(args); } }
四、效果图
每页5条数据
图1
每页10条数据
图2
五、开发环境版本
不限,本样例采用的轻量级环境,版本是: 苍穹版本号 COSMICV4.0.014.0 星瀚版本号 CONSTELLATIONV4.0.014.0
六、注意事项
七、参考资料
页面元数据及源码.zip(11.34KB)
赞 12
12人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读