动态表单,点击按钮,打开单据列表,选取数据,获取回调原创
金蝶云社区-吴锐雄
吴锐雄
18人赞赏了该文章 4,550次浏览 未经作者许可,禁止转载编辑于2021年07月23日 15:12:09
summary-icon摘要由AI智能服务提供

本文介绍了在开发环境中如何打开、操作及关闭不同类型页面的方法。首先,作者鼓励读者对有帮助的文章点赞。接着,文章总结了打开不同类型页面(如单据、动态表单等)时所需的`ShowParameter`类型及步骤,并提醒正确关闭子页面以避免资源未释放的问题。随后,通过创建单据、动态表单和Java插件的示例,详细说明了如何设置弹框选择样式、模板、实体标识和回调事件等,并展示了如何在动态表单中注册插件以及最终演示结果的实现过程。

创作不易,如果文章对您有帮助,请为我点击一个朴实无华的赞^_^,我会更有动力地更新文章。


关于打开页面的一些常见问题总结:

(1)new一个ShowParameter,调用this.getView().showForm(showParameter);

可以打开页面,不同的页面类型,例如单据,动态表单,基础资料这些页面类型,有不同的ShowParameter类型去打开

参考文章:

https://vip.kingdee.com/article/91186744816391168


(2)对于子页面使用完了之后,如果要关闭子页面,一定要调用 getView().close()来关闭当前页面。

千万不能用showForm()去打开上一个页面,之前遇到一个自定义控件一直无法获取焦点的问题,就是由于关闭页面的点击事件不是真的关闭,而是使用getView().showForm(showParameter)再去打开之前的页面。

这么做会导致原先打开的页面一直没有关闭。


步骤:

1.创建单据

image.png

2.增加一个文本控件即可,标识为 wrx1_textfield,其他控件不需要。

image.png

3.创建动态表单,增加一个按钮控件,标识为 wrx1_buttonap。

image.png

4.创建java插件

setLookUp是设置弹框选择样式,如果要展示f7界面,lookup必须设置为true,
setFormId是设置模板,"bos_listf7"就是F7标准列表,f7界面都可以用这个模板去显示
setBillFormId是设置实体标识,这个标识就是之前创建的单据页面的标识
setCloseCallBack是设置回调事件,如果没有设置,closedCallBack()方法不会被调用

image.png


重写closedCallBack()获取回调数据

image.png


整体代码如下

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.动态表单中注册插件

image.png


6.演示结果

image.png

image.png



赞 18