动态的在列表展示第三方数据并实现分页原创
金蝶云社区-熊嘉强
熊嘉强
17人赞赏了该文章 3,799次浏览 未经作者许可,禁止转载编辑于2021年01月15日 14:58:38

案例:现在有第三方系统的数据,或者非当前单据的数据,需要展示在列表上,并且实现分页。

实现:在列表的beforeCreateListDataProvider事件中,取动态的取数,重写取数的方法。通过setListDataProvider方法将数据写入,其中取数需要继承ListDataProvider并重写getData方法。

案例代码:

//列表插件

public class KdecBillDemoListPlugin extends AbstractListPlugin{

@Override

public void beforeCreateListDataProvider(BeforeCreateListDataProviderArgs args) {

// TODO Auto-generated method stub

args.setListDataProvider(new BillListDataProvider());

super.beforeCreateListDataProvider(args);

 }

}


//取数

public class BillListDataProvider extends 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_billdemo15",

"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_billdemo15", "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;

}

}

案例截图:

每页5条数据

image.png

每页10条数据

image.png

赞 17