本文介绍了在开发环境中如何打开、操作及关闭不同类型页面的方法。首先,作者鼓励读者对有帮助的文章点赞。接着,文章总结了打开不同类型页面(如单据、动态表单等)时所需的`ShowParameter`类型及步骤,并提醒正确关闭子页面以避免资源未释放的问题。随后,通过创建单据、动态表单和Java插件的示例,详细说明了如何设置弹框选择样式、模板、实体标识和回调事件等,并展示了如何在动态表单中注册插件以及最终演示结果的实现过程。
创作不易,如果文章对您有帮助,请为我点击一个朴实无华的赞^_^,我会更有动力地更新文章。
关于打开页面的一些常见问题总结:
(1)new一个ShowParameter,调用this.getView().showForm(showParameter);
可以打开页面,不同的页面类型,例如单据,动态表单,基础资料这些页面类型,有不同的ShowParameter类型去打开
参考文章:
https://vip.kingdee.com/article/91186744816391168
(2)对于子页面使用完了之后,如果要关闭子页面,一定要调用 getView().close()来关闭当前页面。
千万不能用showForm()去打开上一个页面,之前遇到一个自定义控件一直无法获取焦点的问题,就是由于关闭页面的点击事件不是真的关闭,而是使用getView().showForm(showParameter)再去打开之前的页面。
这么做会导致原先打开的页面一直没有关闭。
步骤:
1.创建单据
2.增加一个文本控件即可,标识为 wrx1_textfield,其他控件不需要。
3.创建动态表单,增加一个按钮控件,标识为 wrx1_buttonap。
4.创建java插件
setLookUp是设置弹框选择样式,如果要展示f7界面,lookup必须设置为true, setFormId是设置模板,"bos_listf7"就是F7标准列表,f7界面都可以用这个模板去显示 setBillFormId是设置实体标识,这个标识就是之前创建的单据页面的标识 setCloseCallBack是设置回调事件,如果没有设置,closedCallBack()方法不会被调用
重写closedCallBack()获取回调数据
整体代码如下
package kd.ecos.demo;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.form.*;
import kd.bos.form.control.Control;
import kd.bos.form.control.events.BeforeClickEvent;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.list.ListShowParameter;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.QueryServiceHelper;
import java.util.ArrayList;
import java.util.EventObject;
public class DemoPagerFormPlugin extends AbstractFormPlugin{
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
addClickListeners("wrx1_buttonap");
}
@Override
public void beforeClick(BeforeClickEvent evt) {
super.beforeClick(evt);
if (evt.getSource() instanceof Control) {
String name = ((Control)evt.getSource()).getKey();
if ("wrx1_buttonap".equals(name)) {
//ListShowParameter showParameter = ShowFormHelper.createShowListForm("wrx1_1010", true, 0, true);
ListShowParameter showParameter = new ListShowParameter();
// 设置展开模式
showParameter.getOpenStyle().setShowType(ShowType.Modal);
// 设置选择状态
showParameter.setLookUp(true);
// 设置模板id
showParameter.setFormId("bos_listf7");
// 设置实体id
showParameter.setBillFormId("wrx1_1010");
// 设置回调
showParameter.setCloseCallBack(new CloseCallBack(this, "test"));
// 设置展开宽度,高度
StyleCss styleCss = new StyleCss();
styleCss.setWidth("800");
styleCss.setHeight("600");
showParameter.getOpenStyle().setInlineStyleCss(styleCss);
getView().showForm(showParameter);
}
}
}
@Override
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
super.closedCallBack(closedCallBackEvent);
// 接收回调
if (closedCallBackEvent.getReturnData() instanceof ListSelectedRowCollection) {
ListSelectedRowCollection selectCollections = (ListSelectedRowCollection)closedCallBackEvent.getReturnData();
ArrayList list = new ArrayList();
for (ListSelectedRow row : selectCollections) {
// list存储id
list.add(row.getPrimaryKeyValue());
}
// 构造QFilter
QFilter qFilter = new QFilter("id", QFilter.equals, list.get(0));
for (int i = 1; i < list.size(); i++) {
qFilter = qFilter.or(new QFilter("id", QFilter.equals, list.get(i)));
}
// 将选中的id对应的数据从数据库加载出来
DynamicObjectCollection collections = QueryServiceHelper.query("query1010", "wrx1_1010",
"id, creator, wrx1_textfield, wrx1_textfield1", qFilter.toArray(), "");
for (DynamicObject object : collections) {
System.out.println(object.getString("wrx1_textfield"));
}
}
}
}
5.动态表单中注册插件
6.演示结果
推荐阅读