标准单据列表插件-插件基类
1 插件基类介绍
插件基类介绍在列表界面加载、过滤取数、显示的过程中,除了会触发动态表单的界面事件之外,还会触发特别定义的单据列表插件事件。
标准单据列表界面插件基类为 AbstractListPlugin,派生自动态表单界面插件基类,能够支持表单的各种事件。
package kd.bos.list.plugin; public class AbstractListPlugin extends AbstractFormPlugin implements ListRowClickListener, IPCListPlugin {
2 插件接口
PC端插件接口标准单据列表界面插件实现了ListRowClickListener, IPCListPlugin 接口,即表格行点击插件事件、单据列表插件事件。
PC端单据列表界面插件事件接口为IPCListPlugin,派生自动态表单界面插件接口IListPlugin,IListPlugin派生自动态表单界面插件接口IFormPlugin,增加列表行交互等事件。
列表的携手基类是AbstractListPlugin,包含的方案如下:
事件名称 说明 billListHyperLinkClick 超链接点击 beforeCreateListColumns 列创建 beforeCreateListDataProvider 自定义取数(注意不要修改基础资料的引用属性,因为会打乱缓存数据,此方法只适合非基础资料字段修改) setFilter 设置过滤条件 beforePackageData 包装数据前,需要遍历这个数据包,用于格式化数据(注意不要修改基础资料的引用属性,因为会打乱缓存数据,此方法只适合非基础资料字段修改) packageData 包装数据,单元格填值,用于格式化数据 chat 打开云之家监听 filterContainerInit 过滤字段元数据初始化 filterContainerSearchClick 查询,过滤条件第一次解析,过滤条件是界面上的初始过滤值 filterContainerAfterSearchClick 最终查询条件解析后,可以在此事件得到最终解析后的过滤条件,然后做自定义处理 filterContainerBeforeF7Select 常用过滤和方案过滤的F7监听 filterColumnSetFilter 过滤字段上的基础资料字段过滤条件调整事件 事件生命周期 页面加载 beforeCreateListDataProvider filterColumnSetFilter filterContainerInit beforeCreateListColumns setFilter packageData 点击查询 filterColumnSetFilter filterContainerInit filterContainerSearchClick filterContainerAfterSearchClick beforeCreateListColumns beforeCreateListDataProvider setFilter packageData
列表继承的基类接口是IListPlugin
package kd.bos.list.plugin; public interface IListPlugin extends IFormPlugin {
3 创建并注册插件
自定义单据列表界面插件,需要扩展AbstractListPlugin,如下例:
package kd.bos.plugin.sample.bill.list.bizcase; import kd.bos.list.plugin.AbstractListPlugin; public class ListEventSample extends AbstractListPlugin { }
打开单据设计器,切换到列表设计页签,注册单据列表插件。
实例:
示例:filterContainerInit
@Override
public void filterContainerInit(FilterContainerInitArgs args) {
FilterColumn filterColumn = args.getFilterColumn("datefield");
filterColumn.setDefaultValues("2019-1-30", "2019-1-31");
FilterColumn filterColumn2 = new FilterColumn("textfield");
args.addFilterColumn(filterColumn2);
CommonFilterColumn commonFilterColumn = new CommonFilterColumn("combofield");
args.addFilterColumn(commonFilterColumn);
SchemeFilterColumn schemeFilterColumn = new SchemeFilterColumn("combofield");
args.addFilterColumn(schemeFilterColumn);
super.filterContainerInit(args);
}
示例:filterContainerSearchClick
@Override
public void filterContainerSearchClick(FilterContainerSearchClickArgs args) {
System.err.println(args.getFilterValue("datefield"));
System.err.println(args.getFastFilterValues());
System.err.println(args.getQFilter("datefield"));
System.err.println(args.getSelectMainOrgIds());
args.addConstFilter("datefield", CompareTypeEnum.TODAY);
args.addFastFilter("textfield", "test");
args.addFilter("textfield", CompareTypeEnum.EQUAL, "123");
super.filterContainerSearchClick(args);
}
示例:filterContainerBeforeF7Select
@Override
public void filterContainerBeforeF7Select(BeforeFilterF7SelectEvent args) {
if ("basedatafield2.name".equals(args.getFieldName()))
args.addCustomQFilter(new QFilter("name", QFilter.equals, "test123"));
super.filterContainerBeforeF7Select(args);
}
示例:filterColumnSetFilter
@Override
public void filterColumnSetFilter(SetFilterEvent args) {
if ("basedatafield2.name".equals(args.getFieldName()))
args.addCustomQFilter(new QFilter("name", QFilter.equals, "test123"));
// 基础资料依赖于上面的选择字段orgfield1,将orgfield1的已选中值添加到basedatafield2
if ("basedatafield2.name".equals(args.getFieldName())) {
FilterColumnSetFilterEvent args2 = (FilterColumnSetFilterEvent) args;
args.addCustomQFilter(new QFilter("name", QFilter.equals, args2.getCommonFilterValue("orgfield1.number")));
}
super.filterColumnSetFilter(args);
}
示例:beforeCreateListColumns
@Override
public void beforeCreateListColumns(BeforeCreateListColumnsArgs beforecreatelistcolumnsargs) {
ComboListColumn comboListColumn = new ComboListColumn();
comboListColumn.setListFieldKey("combofield");
MergeListColumn mergeListColumn = new MergeListColumn();
mergeListColumn.setKey("mergelistcolumn");
mergeListColumn.getItems().add(comboListColumn);
beforecreatelistcolumnsargs.addListColumn(mergeListColumn);
IListColumn listColumn = beforecreatelistcolumnsargs.getListColumn("textfield");
System.err.println("beforeCreateListColumns");
System.err.println(listColumn);
System.err.println(beforecreatelistcolumnsargs.getDynamicTextListColumns());
System.err.println(beforecreatelistcolumnsargs.getMergeListColumns());
System.err.println(beforecreatelistcolumnsargs.getListGroupColumns());
super.beforeCreateListColumns(beforecreatelistcolumnsargs);
}
示例:setFilter(如果是树型列表的过滤条件添加建议重载buildTreeListFilter)
@Override
public void setFilter(SetFilterEvent e) {
e.addCustomQFilter(new QFilter("combofield", "=", "1"));
}
4 插件注册位置
【列表】→【表单根节点】→【列表插件】控件属性
参考链接:https://developer.kingdee.com/article/318066281335319808?productLineId=29&isKnowledge=2&lang=zh-CN
标准单据列表插件-插件基类
本文2024-09-23 00:17:03发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-138484.html