界面加载后,如何动态添加控件原创
5人赞赏了该文章
2,656次浏览
编辑于2021年08月18日 15:00:06
界面加载后,在点击事件中动态添加控件示例:
监听按钮的click事件
在click事件中,获取要装载新控件的容器控件
new一个具体的控件对象并set通用属性
调用容器控件的addControls方法将新控件放入容器控件中
代码示例:
import java.util.ArrayList; import java.util.EventObject; import java.util.HashMap; import java.util.List; import java.util.Map; import kd.bos.dataentity.entity.LocaleString; import kd.bos.dataentity.utils.StringUtils; import kd.bos.form.ClientActions; import kd.bos.form.ClientProperties; import kd.bos.form.IClientViewProxy; import kd.bos.form.container.Container; import kd.bos.form.control.Control; import kd.bos.form.plugin.AbstractFormPlugin; import kd.bos.metadata.form.control.LabelAp; public class FlexPanelSample extends AbstractFormPlugin { private final static String KEY_BUTTON1 = "buttonap1"; private final static String KEY_FLEXPANEL1 = "contentpanel"; @Override public void registerListener(EventObject e) { super.registerListener(e); this.addClickListeners(KEY_BUTTON1); } @Override public void click(EventObject evt) { super.click(evt); Control source = (Control) evt.getSource(); if (StringUtils.equals(KEY_BUTTON1, source.getKey())){ addLabel("label1"); } } private void addLabel(String labelKey){ Container container = this.getView().getControl(KEY_FLEXPANEL1); LabelAp label1 = new LabelAp(); label1.setId(labelKey); label1.setKey(labelKey); label1.setName(new LocaleString("动态标签")); label1.setParentId(KEY_FLEXPANEL1); List<Map<String, Object>> items = new ArrayList<>(); items.add(label1.createControl()); container.addControls(items); } }
注意:由于表单界面加载后数据包已初始化完成,新加字段会导致数据包属性不匹配,因此在初始化界面后只能动态添加无实体的控件,而不能再添加实体字段。
赞 5
5人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读