父窗体接收子窗体返回的数据

需求:生产用料清单上面点击按钮弹出一个窗体,窗体上面有个单据体,选中单据体中的某些数据,点击返回按钮,就会把选中的数据添加到父窗体中。

BOS截图如下:

新建一个普通动态表单,拖入一个按钮和一个单据体,并在单据体中加入需要的字段。

生产用料清单上面添加按钮。

在生产用料清单和新建的普通动态表单上分别注册插件。

插件源码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using System.Text.RegularExpressions;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Bill.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.Metadata;
using System.Data;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.Metadata.ControlElement;
using Kingdee.BOS.Cache;
using System.ComponentModel;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Orm;

namespace GetMat
{
    [Description("演示如何从子界面返回数据 - 父界面插件")]
    public class GetMat : AbstractDynamicFormPlugIn
    {
        public override void ButtonClick(ButtonClickEventArgs e)
        {
            if (e.Key.ToUpperInvariant().Equals("F_PAEZ_GETMAT"))
            {
                string FBillNO = this.View.Model.GetValue("FBillNo").ToString();
                string Sql = "exec Z_GetMatInfo '"+ FBillNO+"'";
                DataSet ds = new DataSet();
                ds = Kingdee.BOS.ServiceHelper.DBServiceHelper.ExecuteDataSet(this.Context,Sql);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    MatInfo.MatNO = ds.Tables[0].Rows[0]["MatNO"].ToString();
                    MatInfo.MatName = ds.Tables[0].Rows[0]["MatName"].ToString();
                    MatInfo.MatXH = ds.Tables[0].Rows[0]["XH"].ToString();
                    //MatInfo.MatGL = ds.Tables[0].Rows[0][""].ToString();
                    MatInfo.MatZZ = ds.Tables[0].Rows[0]["ZZNO"].ToString();
                    MatInfo.MatWX = ds.Tables[0].Rows[0]["WX"].ToString();
                    MatInfo.MatTouLiao = Convert.ToDecimal(ds.Tables[0].Rows[0]["TouLiao"].ToString());
                }

                DynamicFormShowParameter showParam = new DynamicFormShowParameter();
                showParam.FormId = "kf6e7eb2e185e4130ab7d44cde217a532";
                this.View.ShowForm(showParam,
                    new Action<FormResult>((formResult) =>
                    {
                        if (formResult != null && formResult.ReturnData != null)
                        {
                            this.Model.SetValue("F_PAEZ_Text",
                                ((ReturnDataInfo)formResult.ReturnData).F_PAEZ_Text);
                            for (int i = 0; i < ((ReturnDataInfo)formResult.ReturnData).entityrows.Count; i++)
                            {
                                if (((ReturnDataInfo)formResult.ReturnData).entityrows[i]["F_PAEZ_CheckBox"].ToString().Equals("True"))
                                {
                                    this.View.Model.CreateNewEntryRow("FEntity");
                                    int RowCount = this.View.Model.GetEntryRowCount("FEntity");
                                    this.View.Model.SetItemValueByID("FMaterialID2", ((ReturnDataInfo)formResult.ReturnData).entityrows[i]["F_PAEZ_Mat_ID"], RowCount - 1);
                                }
                            }
                        }
                    }));
            }
        }
    }
    [Description("演示如何从子界面返回数据 - 子界面插件")]
    public class ReturnInfoChild : AbstractDynamicFormPlugIn
    {
        public override void ButtonClick(ButtonClickEventArgs e)
        {
            // 用户点击确定按钮
            if (e.Key.ToUpperInvariant().Equals("F_PAEZ_RETURN"))
            {
                //取单据体对象数据
                Entity entity = this.View.BusinessInfo.GetEntity("F_PAEZ_Entity");
                DynamicObjectCollection rowObjs = this.View.Model.GetEntityDataObject(entity);                
                // 构建返回数据对象
                ReturnDataInfo returnInfo = new ReturnDataInfo();
                returnInfo.F_PAEZ_Text = Convert.ToString(this.Model.GetValue("F_PAEZ_Text"));
                returnInfo.Entry = entity;
                returnInfo.entityrows = rowObjs;
                int rowcount = rowObjs.Count;
                // 把数据对象,返回给父界面
                this.View.ReturnToParentWindow(new FormResult(returnInfo));
                this.View.Close();
            }
        }
        public override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            //this.View.Model.SetValue("F_PAEZ_Text","123456");
            string sql = "exec Z_GetPartMat '"+ MatInfo.MatXH+"','"+MatInfo.MatZZ+"',"+MatInfo.MatTouLiao;
            DataSet ds = new DataSet();
            ds = Kingdee.BOS.ServiceHelper.DBServiceHelper.ExecuteDataSet(this.Context,sql);
            int RowCount = ds.Tables[0].Rows.Count;
            if (RowCount > 0)
            {
                for (int i = 0; i < RowCount; i++)
                {
                    this.View.Model.CreateNewEntryRow("F_PAEZ_Entity");
                    this.View.Model.SetItemValueByNumber("F_PAEZ_Mat",ds.Tables[0].Rows[i]["MatNO"].ToString(),i);
                    this.View.Model.SetValue("F_PAEZ_LH", ds.Tables[0].Rows[i]["Lot"].ToString(),i);
                    this.View.Model.SetValue("F_PAEZ_XH", ds.Tables[0].Rows[i]["FGL"].ToString(), i);
                    this.View.Model.SetValue("F_PAEZ_ZZ", ds.Tables[0].Rows[i]["CZ"].ToString(), i);
                    this.View.Model.SetValue("F_PAEZ_WX", ds.Tables[0].Rows[i]["WX"].ToString(), i);
                    this.View.Model.SetValue("F_PAEZ_STOCKQTY", ds.Tables[0].Rows[i]["Qty"].ToString(), i);
                }
            }

        }
    }
    /// <summary>
    /// 由子窗体返回给父窗体的数据对象
    /// </summary>
    public class ReturnDataInfo
    {
        public string F_PAEZ_Text { get; set; }
        public Entity Entry { get; set; }
        public DynamicObjectCollection entityrows { get; set; }
    }

    ///成品阻值,温度系数信息
    public static class MatInfo
    {
        public static string MatNO { get; set; }
        public static string MatName { get; set; }
        public static string MatXH { get; set; }
        public static string MatGL { get; set; }
        public static string MatZZ { get; set; }
        public static string MatWX { get; set; }
        public static decimal MatTouLiao { get; set; }
    }
}

猜你喜欢

转载自www.cnblogs.com/zfangfang/p/10058370.html