如何开发自定义列表界面-将不同的单据展示在同一个列表界面(分开显示)原创
金蝶云社区-聚宝彭
聚宝彭
6人赞赏了该文章 4202次浏览 未经作者许可,禁止转载编辑于2022年04月15日 18:31:23

关键词:单据列表


一、需求

在许多业务需求中(如以下两种场景),苍穹平台的标准单据列表界面满足不了,这就需要我们进行二开来实现。接下来我们就以第一种场景为例介绍一下实现方案。

以采购申请单为例,

① 业务上需要在一个采购申请单列表界面展示采购申请单 & 采购订单 2个列表数据。

② 业务需要上在列表界面展示列表数据 & 饼图/柱状图等,并具有联动关系。


二、思路与方案

我们可通过空白动态表单自定义一个个性化的单据列表界面,然后将其绑定到目标单据(即采购申请单)的列表设计器界面 -> 根节点 ->“列表表单模板”业务属性,再配合插件来实现即可。


三、实现过程

1. 本案例以采购申请单&采购订单为业务单据样例,有关该两个业务单据的设计此处不再赘述,请参阅:案例实战——采购订货案例


2. 用 空白动态表单 仿着标准列表界面(bos_list)开发自定义列表界面(kdec_billlist_demo2_1),放置过滤控件、工具栏、2个单据列表等控件,其设计器界面如下图所示。

注意:划重点啦,请大家搬好小板凳坐下认真看啊~

有一个单据列表控件必须要满足以下要求:

    > 其标识必须为 billlistap

    > 其下的表格视图、卡片视图的标识分别必须为:gridview、cardview

image.png

图 1


image.png

图 2


附:原采购申请单(kdec_billlist_demo2)的单据列表设计器界面如下图所示。

image.png

图 3


3. 过滤控件必须绑定一个实体,可以直接将其标识改为 filtercontainerap,与标准列表界面(bos_list)的保持一致。也可通过在插件中绑定一个单据实体(此处以采购申请单/kdec_billlist_demo2为例),源码如下,该插件注册在自定义列表页面(kdec_billlist_demo2_1)上。

package kd.demo.control.billlist.billlistap.demo2;

import java.util.EventObject;

import kd.bos.filter.FilterContainer;
import kd.bos.form.plugin.AbstractFormPlugin;

public class BillListDemo2 extends AbstractFormPlugin {
	
	@Override
	public void afterCreateNewData(EventObject e) {
		FilterContainer filterContainer = getControl("kdec_filtercontainerap");
		filterContainer.setBillFormId("kdec_billlist_demo2");
		filterContainer.setEntityId("kdec_billlist_demo2");
		super.afterCreateNewData(e);
	}
	
	@Override
	public void afterBindData(EventObject e) {
		super.afterBindData(e);
	}
	
}


4. 将第 2 步新开发的自定义列表界面(kdec_billlist_demo2_1)注册到目标单据 -> 单据列表设计器界面 -> 根节点 -> 业务属性“列表表单模板”,如图 4 所示。

列表表单模板.png

图 4


四、效果图

image.png


五、开发环境版本

不限


六、注意事项

1. 通过平台提供的模板新建的单据,在其单据列表设计器界面,根节点上业务属性“列表表单模板”配置的业务才是决定运行期列表实际展示的页面。这一点,如不清楚,请自行学习 列表设计

2. 用空白动态表单自定义的单据列表界面,其中的单据列表控件 & 表格视图 & 卡片视图 的标识必须与页面 bos_list 上对应的保持一致,否则业务数据展现不出来,切记!切记!切记!


七、参考资料

开发平台

学习成长中心

列表设计

关于苍穹PC端单据列表表格视图样式&业务数据二开的样例

苍穹PC端单据列表的过滤控件开发的样例

动态表单添加过滤控件与单据列表

列表中,怎么用插件实现调整表格视图里的字段排序?我需要在其他表单中调用这个列表,显示的字段要不同顺序,插件代码怎么写?



赞 6