标准单据列表插件-插件基类

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

标准单据列表插件-插件基类

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

标准单据列表插件-插件基类

1 插件基类介绍插件基类介绍在列表界面加载、过滤取数、显示的过程中,除了会触发动态表单的界面事件之外,还会触发特别定义的单据列表插...
点击下载文档
上一篇:列表过滤下一篇:报表限流
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息