本文介绍了在Python开发中,特别是使用特定插件(如Kingdee.BOS相关插件)时,如何处理父页面与子页面之间的数据传递,包括动态表单的弹出、数据的接收与传递、以及子页面数据返回给父页面的方法。文中详细展示了如何使用Python插件和API实现这些功能,包括通过字典接收父页面参数、在子页面中使用这些参数、在数据录入后验证并返回更新后的数据到父页面等步骤,并提供了具体的代码示例。
对于我们日常开发的功能中,会经常遇到需要做界面交互,需要弹出界面来做数据处理。
父页面和子页面之间需要做数据相互传递,这时候我们就需要用到动态表单。
例如,我之前分享的Python列表插件批改单据明细字段,就需要弹出我们自己设计的字段录入界面,来对单据明细的字段进行批改,那么对于一些简单的弹出界面处理,我们用Python插件来处理开发效率会更高。
父页面弹出动态表单子页面代码示例-传送门:Python表单插件-点击菜单弹出动态表单传递参数到子页面
下面分享一下Python动态表单插件-子页面关闭返回数据到父页面的代码示例。
网页复制代码会有格式问题,如需复制代码,请下载附件!
#引入clr运行库
import clr
#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.ServiceHelper')
#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
global dic;#定义全局变量,用来记录父页面传过来的参数
def OnInitialize(e):
global dic;
#获取父页面传入的参数:这里是通过字典的方式传入多个字段值
dic=this.View.OpenParameter.GetCustomParameter("DIC");
def AfterBindData(e):
#获取父页面的FormId
parentFormId=this.View.ParentFormView.BillBusinessInfo.GetForm().Id;
#this.View.ShowMessage(parentFormId);
def AfterCreateNewData(e):
global dic;
#将父页面获取到的参数逐个赋值到动态表单的字段上
orgId = str(dic["orgId"]);
year = dic["year"];
month = str(dic["month"]);
this.View.Model.SetItemValueByID("F_ora_OrgId", orgId, 0);
this.View.Model.SetValue("F_ora_Year", year, 0);
this.View.Model.SetValue("F_ora_Month", month, 0);
def ButtonClick(e):
key=e.Key.ToUpper();
if(key=="F_ora_OKBtn".ToUpper()):
global dic;
billObj = this.View.Model.DataObject;
orgId = str(billObj["F_ora_OrgId_Id"]);
year = billObj["F_ora_Year"];
month = str(billObj["F_ora_Month"]);
if(orgId=="0"):
this.View.ShowWarnningMessage("请选择组织!");
return;
if(year<2020 or year>2100):
this.View.ShowWarnningMessage("请输入有效的年份!");
return;
if(month==""):
this.View.ShowWarnningMessage("请选择有效的月份!");
return;
orgObj=billObj["F_ora_OrgId"];
dic["orgId"]=orgId;
dic["year"]=str(year);
dic["month"]=month;
dic["orgName"]=orgObj["Name"];
this.View.ReturnToParentWindow(dic);#构建字典,将界面录入的数据返回父页面
this.View.Close();
else:
this.View.Close();
#======代码结束===================================================
Python动态表单插件关闭子页面返回数据到父页面.rar(1.16KB)
发布于 金蝶云星空BOS开发交流圈 社群
推荐阅读