Python动态表单插件-子页面关闭返回数据到父页面原创
金蝶云社区-CQ周玉立
CQ周玉立
24人赞赏了该文章 7,373次浏览 未经作者许可,禁止转载编辑于2022年03月15日 10:55:47
summary-icon摘要由AI智能服务提供

本文介绍了在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();


#======代码结束===================================================

发布于 金蝶云星空BOS开发交流圈 社群

图标赞 24
24人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!