小技巧 - 如何在子界面确定时,把字段值填写到父界面
金蝶云社区-JohnnyDing
JohnnyDing
5人赞赏了该文章 10962次浏览 未经作者许可,禁止转载编辑于2015年08月04日 14:18:19

背景:
在父界面上弹出子界面,供用户录入数据,确定返回后,把子界面上的数据填写到父窗口字段上;

案例说明:
1. 设计两个界面,分别为父界面、子页面;
2. 两个界面上,各有一个文本框、一个按钮;
3. 用户点击父界面上的按钮,会弹出子界面;
4. 用户在子界面上录入文本,点击确定按钮,会把文本返回,并填写到父界面上;

示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Kingdee.BOS;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

namespace JDSample.FormPlugIn.DynamicForm
{
///


/// 演示如何从子界面返回数据
///

///
/// 案例说明:
/// 1. 需要有两个界面,父界面通过按钮弹出子界面;
/// 2. 用户在子界面上编辑数据,确定后返回父界面;
/// 3. 把子界面上的字段F_JD_Text值,填写到父界面的同名字段上;
///

[Description("演示如何从子界面返回数据 - 父界面插件")]
public class S150804ReturnInfoParentEdit : AbstractDynamicFormPlugIn
{
public override void ButtonClick(ButtonClickEventArgs e)
{
if (e.Key.EqualsIgnoreCase("F_JD_ShowChildForm"))
{
DynamicFormShowParameter showParam = new DynamicFormShowParameter();
showParam.FormId = "1606a9d2-fd34-4616-8582-6e4f732664a9";
this.View.ShowForm(showParam,
new Action((formResult) =>
{
if (formResult != null && formResult.ReturnData != null)
{
this.Model.SetValue("F_JD_Text",
((S150804ReturnInfo)formResult.ReturnData).JD_Text);
}
}));
}
}
}
[Description("演示如何从子界面返回数据 - 子界面插件")]
public class S150804ReturnInfoChildEdit : AbstractDynamicFormPlugIn
{
public override void ButtonClick(ButtonClickEventArgs e)
{
// 用户点击确定按钮
if (e.Key.EqualsIgnoreCase("F_JD_OK"))
{
// 构建返回数据对象
S150804ReturnInfo returnInfo = new S150804ReturnInfo();
returnInfo.JD_Text = Convert.ToString(this.Model.GetValue("F_JD_Text"));
// 把数据对象,返回给父界面
this.View.ReturnToParentWindow(new FormResult(returnInfo));
this.View.Close();
}
}
}

///
/// 由子窗体返回给父窗体的数据对象
///

class S150804ReturnInfo
{
public string JD_Text { get; set; }
}
}