金蝶云苍穹动态表单插件registerListener事件案例

涎涎原创约 1505 字大约 5 分钟...KingdeeKingdee

66-金蝶云苍穹动态表单插件registerListener事件案例.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

  1. 新建动态表单对话框模板

  2. 新增Flex面板在内容区

添加工具栏在Flex面板中,并将其中的按钮删除只剩一个,将其标识更改为baritem1,将其名称更改为工具栏按钮

添加按钮在Flex面板中,将其标识更改为buttonap1

添加单据体在Flex面板中,并在其中添加文本字段一个

添加树形控件在Flex面板中,将其标识更改为treeviewap1

将加树形菜单在Flex面板中,将其标识更改为treemenuap1

  1. 保存后新建插件类并进行编码
package kd.bos.dynamicform.plugin;

import java.util.ArrayList;
import java.util.EventObject;
import java.util.List;

import kd.bos.dataentity.utils.StringUtils;
import kd.bos.entity.tree.TreeMenuNode;
import kd.bos.entity.tree.TreeNode;
import kd.bos.form.control.Button;
import kd.bos.form.control.Control;
import kd.bos.form.control.EntryGrid;
import kd.bos.form.control.Toolbar;
import kd.bos.form.control.TreeMenu;
import kd.bos.form.control.TreeView;
import kd.bos.form.control.events.ClickListener;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.form.control.events.ItemClickListener;
import kd.bos.form.control.events.RowClickEvent;
import kd.bos.form.control.events.RowClickEventListener;
import kd.bos.form.control.events.TreeMenuClickListener;
import kd.bos.form.control.events.TreeNodeClickListener;
import kd.bos.form.control.events.TreeNodeEvent;
import kd.bos.form.plugin.AbstractFormPlugin;

/**
 * <p>Title: </p>
 * <p>
 *    Description:
 *    registerListener 事件试验
 * </p>
 * <p>Copyright: Copyright (c) 2020</p>
 * @author xx
 * @date 2020年3月6日
 * @version 1.0
 */
public class RegisterListenerSample extends AbstractFormPlugin
		implements ItemClickListener, ClickListener, RowClickEventListener, TreeNodeClickListener,TreeMenuClickListener  {

	private final static String KEY_MBAR = "tbmain";//工具栏
	private final static String KEY_BARITEM1 = "baritem1";//工具栏里的按钮
	private final static String KEY_BUTTON1 = "buttonap1";//按钮
	private final static String KEY_ENTRYENTITY = "entryentity";//单据体行
	private final static String KEY_TREEVIEW1 = "treeviewap1";//树型控件
	private final static String KEY_TREEMENU1 = "treemenuap1";//树型菜单
	
	/**
	 * (non-Javadoc)
	 * <p>Title: afterBindData</p>
	 * <p>
	 *    Description:
	 *    界面数据包构建完毕,生成指令,刷新前端字段值、控件状态之后,触发此事件;
	 *    插件可以在此事件,根据各字段值数据,重新设置控件、字段的可用、可见性等。
	 *    不要在此事件,修改字段值。
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月9日
	 * @param e
	 * @see kd.bos.form.plugin.AbstractFormPlugin#afterBindData(java.util.EventObject)
	 */
	@Override
	public void afterBindData(EventObject e) {
		super.afterBindData(e);
		//为树形控件添加数据
		TreeView treeView = this.getView().getControl(KEY_TREEVIEW1);
		this.constructorDataforTreeView(treeView);//将其添加数据
		// 为树形菜单添加数据
		TreeMenu treeMenu = this.getControl(KEY_TREEMENU1);
		this.constructorDataforTreeMenu(treeMenu);
	}
	
	private void constructorDataforTreeMenu(TreeMenu tree) {
		   // 构造节点数据
	    List<TreeMenuNode> nodes = new ArrayList<>();
	    // 一级节点
	    TreeMenuNode level_1_node = new TreeMenuNode("","a1","node1");
	    // 一级子节点
	    TreeMenuNode level_1_1_node = new TreeMenuNode("a1","a1_1","node1_1");
	    // 将一级子节点插入到其父结点中
	    level_1_node.addChild(level_1_1_node);
	    //二级节点
	    TreeMenuNode level_2_node = new TreeMenuNode("","a2","node2");
	    nodes.add(level_1_node);
	    nodes.add(level_2_node);
	    // 将整个节点数据add到树控件
	    tree.addNodes(nodes);
	}

	/**
	 * void</br>
	 * 
	 * <p>Title: constructorData</p>
	 * <p>
	 *    Description:
	 *    给树形控件构造数据
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月10日
	 * @param param the bare_field_name
	 * @return the bare_field_name
	 * @param tv1
	 * @version 1.0
	 */
	private void constructorDataforTreeView(TreeView tv1) {
		final String rootId = "0"; // 根节点id
		TreeNode rootNode = new TreeNode(null, rootId, "根节点", true);
	    rootNode.setIsOpened(true); // 设置默认展开
	    for (int i = 0; i < 2; i++) {
	    	 // 构造一级子节点
	    	String p1 = rootId + "-" + i;
	    	TreeNode tn1 = new TreeNode(rootId, p1, p1, true);
	    	tn1.setIsOpened(true);
	        tn1.setColor("red"); // 设置节点文字颜色
	        for (int j = 0; j < 2; j++) {
	        	 // 构造二级子节点
	        	String p2 = p1 + "-" + j;
		        TreeNode tn2 = new TreeNode(p1, p2, p2, false);
		        tn1.addChild(tn2);
	        }
	        rootNode.addChild(tn1);
	    }
	    tv1.addNode(rootNode);
	}
	
	/**
	 * <p>Title: registerListener</p>
	 * <p>
	 *    Description:
	 *    用户与界面上的控件进行交互时,即会触发此事件。
	 *    建议在此事件,侦听各个控件的插件事件。
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月6日
	 * @param param the bare_field_name
	 * @param e
	 * @see kd.bos.form.plugin.AbstractFormPlugin#registerListener(java.util.EventObject)
	 * @version 1.0
	 */
	@Override
	public void registerListener(EventObject e) {
		super.registerListener(e);
		// 侦听各控件的插件事件,传入实现了事件接口的插件实例
		// 主菜单按钮点击
		Toolbar mbar = this.getView().getControl(KEY_MBAR);
		mbar.addItemClickListener(this);
		
		// 按钮点击
		Button button = this.getView().getControl(KEY_BUTTON1);
		button.addClickListener(this);
		
		// 单据体行点击
		EntryGrid entryGrid = this.getView().getControl(KEY_ENTRYENTITY);
		entryGrid.addRowClickListener(this);
		
		// 树型控件点击
		TreeView treeView = this.getView().getControl(KEY_TREEVIEW1);
		treeView.addTreeNodeClickListener(this);
		
		//树形菜单点击
		TreeMenu treeMenu = this.getView().getControl(KEY_TREEMENU1);
		treeMenu.addTreeMenuClickListener(this);
	}
	
	/**
	 * <p>Title: itemClick</p>
	 * <p>
	 *    Description:
	 *    工具栏里按钮点击执行事件
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月6日
	 * @param param the bare_field_name
	 * @param evt
	 * @see kd.bos.form.plugin.AbstractFormPlugin#itemClick(kd.bos.form.control.events.ItemClickEvent)
	 * @version 1.0
	 */
	@Override
	public void itemClick(ItemClickEvent evt) {
		super.itemClick(evt);
		if (StringUtils.equals(KEY_BARITEM1, evt.getItemKey())){
			// 事件处理代码略过
			this.getView().showMessage("点击了工具栏里的按钮");
		}
	}
	
	/**
	 * <p>Title: click</p>
	 * <p>
	 *    Description:
	 *    按钮点击进入此事件
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月6日
	 * @param param the bare_field_name
	 * @param evt
	 * @see kd.bos.form.plugin.AbstractFormPlugin#click(java.util.EventObject)
	 * @version 1.0
	 */
	@Override
	public void click(EventObject evt) {
		super.click(evt);
		Control source = (Control)evt.getSource();
		if (StringUtils.equals(KEY_BUTTON1, source.getKey())){
			// 事件处理代码略过
			this.getView().showMessage("点击按钮了");
		}
	}
	
	/**
	 * <p>Title: entryRowClick</p>
	 * <p>
	 *    Description:
	 *    单据体行点击执行
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月6日
	 * @param param the bare_field_name
	 * @param evt
	 * @see kd.bos.form.control.events.RowClickEventListener#entryRowClick(kd.bos.form.control.events.RowClickEvent)
	 * @version 1.0
	 */
	@Override
	public void entryRowClick(RowClickEvent evt) {
		Control source = (Control) evt.getSource();
		if (StringUtils.equals(KEY_ENTRYENTITY, source.getKey())){
			// 事件处理代码略过
			this.getView().showMessage("点击单据体行了");
		}
	}
	
	/**
	 * <p>Title: treeNodeClick</p>
	 * <p>
	 *    Description:
	 *    树形控件点击执行
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月6日
	 * @param param the bare_field_name
	 * @param evt
	 * @see kd.bos.form.control.events.TreeNodeClickListener#treeNodeClick(kd.bos.form.control.events.TreeNodeEvent)
	 * @version 1.0
	 */
	@Override
	public void treeNodeClick(TreeNodeEvent evt) {
		// 事件处理代码略过
		TreeView treeView = (TreeView)evt.getSource();
		if (StringUtils.equals(KEY_TREEVIEW1, treeView.getKey())){
			// 事件处理代码略过
			this.getView().showMessage("点击树形控件了");
		}
	}
	/**
	 * (non-Javadoc)
	 * <p>Title: treeMenuClick</p>
	 * <p>
	 *    Description:
	 *    树形菜单点击事件
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月10日
	 * @param arg0
	 * @see kd.bos.form.control.events.TreeMenuClickListener#treeMenuClick(kd.bos.form.control.events.TreeNodeEvent)
	 */
	@Override
	public void treeMenuClick(TreeNodeEvent evt) {
		TreeMenu treeMenu = (TreeMenu) evt.getSource();
		if(StringUtils.equals(KEY_TREEMENU1, treeMenu.getKey())) {
			this.getView().showMessage("点击树形菜单了");
		}
	}
	/**
	 * (non-Javadoc)
	 * <p>Title: treeMenuDoubleClick</p>
	 * <p>
	 *    Description:
	 *    接口必须要实现的方法体
	 * </p>
	 * <p>Copyright: Copyright (c) 2020</p>
	 * @author xx
	 * @date 2020年3月10日
	 * @param arg0
	 * @see kd.bos.form.control.events.TreeMenuClickListener#treeMenuDoubleClick(kd.bos.form.control.events.TreeNodeEvent)
	 */
	@Override
	public void treeMenuDoubleClick(TreeNodeEvent arg0) {
	}
}
  1. debug重启DebugServer后注册插件并预览,效果如下图所示

分割线


相关信息

以上就是我关于 金蝶云苍穹动态表单插件registerListener事件案例 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。

上次编辑于:
贡献者: 涎涎
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.4