苍穹云中级父子传参代码详情原创
金蝶云社区-郭勇龙
郭勇龙
2人赞赏了该文章 1,076次浏览 未经作者许可,禁止转载编辑于2023年04月11日 11:59:21

首先注册单据插件到申请单界面,第二注册动态表单插件到弹窗层


单据插件

import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.form.CloseCallBack;
import kd.bos.form.FormShowParameter;
import kd.bos.form.OpenStyle;
import kd.bos.form.ShowType;
import kd.bos.form.control.Control;
import kd.bos.form.control.EntryGrid;
import kd.bos.form.control.events.CellClickEvent;
import kd.bos.form.control.events.CellClickListener;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.sdk.plugin.Plugin;

import java.util.EventObject;

/**
 * 单据界面
 *
 * @author xxx
 */
public class OfficeApplyBillPlugin extends AbstractBillPlugIn implements  CellClickListener, Plugin {
    @Override
    public void registerListener(EventObject e) {
        super.registerListener(e);
        EntryGrid entryGrid = this.getView().getControl("entryentity");
        entryGrid.addCellClickListener(this);
    }

    @Override
    public void cellClick(CellClickEvent evt) {
        String key = evt.getFieldKey();
        if ("gmdo_applynum".equals(key)) {
            IDataModel model = this.getModel();
            //获取物料id
            DynamicObjectCollection doc = model.getEntryEntity("entryentity");
            DynamicObject obj = doc.get(evt.getRow());
            obj = obj.getDynamicObject("gmdo_basedatafield");
            String id = obj.getString("id");
            //控制FormShowParameter,打开子页面弹窗
            FormShowParameter showParameter = new FormShowParameter();
            OpenStyle openStyle = showParameter.getOpenStyle();
            openStyle.setShowType(ShowType.Modal);
            showParameter.setFormId("gmdo_officecount");
            //传参给子页面
            showParameter.setCustomParam("id", id);
            showParameter.setCloseCallBack(new CloseCallBack(this, "gmdo_officecount"));
            this.getView().showForm(showParameter);
        }
    }

    @Override
    public void cellDoubleClick(CellClickEvent cce) {
        String key = cce.getFieldKey();
        if ("gmdo_allcountbtn".equals(key)) {

        }
    }

    @Override
    public void closedCallBack(ClosedCallBackEvent e) {
        super.closedCallBack(e);
        String callBackPage = e.getActionId();
        if ("gmdo_officecount".equals(callBackPage)){
            //获取回参参数
            int count = (int) e.getReturnData();
            //写入页面
            this.getModel().setValue("gmdo_applynum",count,0);
        }
    }
}
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.form.events.BeforeClosedEvent;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.sdk.plugin.Plugin;

import java.util.EventObject;

/**
 * 动态表单
 *
 * @author 22246
 */
public class OfficeApplyFormPlugin extends AbstractFormPlugin implements Plugin {
    @Override
    public void afterCreateNewData(EventObject e) {
        super.afterCreateNewData(e);
        //获取父页面的传参
        String id = getView().getFormShowParameter().getCustomParam("id");
        QFilter filter = new QFilter("id", "=", Long.valueOf(id));
        //查询物品名称和库存
        DynamicObject dyn = BusinessDataServiceHelper.loadSingle("gmdo_sup", "name,gmdo_count", new QFilter[]{filter});
        String name = dyn.getString("name");
        int count = dyn.getInt("gmdo_count");
        //把查询到的结果放入页面中
        getModel().setValue("gmdo_name", name);
        getModel().setValue("gmdo_count", count);
    }

    @Override
    public void beforeClosed(BeforeClosedEvent e) {
        super.beforeClosed(e);
        //获取页面的库存数量
        int count = (int) this.getModel().getValue("gmdo_count");
        this.getView().returnDataToParent(count);
    }
}


赞 2