public DynamicObject installCostRequestPackage(Context ctx, string FormID, Action <IDynamicFormViewService> fillBillPropertys, string BillTypeId = "") { //IMetaDataService metaService = ServiceHelper.GetService<IMetaDataService>();//元数据服务 //FormMetadata Meta = metaService.Load(ctx, FormID) as FormMetadata;//获取元数据 FormMetadata Meta = MetaDataServiceHelper.Load(ctx, FormID) as FormMetadata;//获取元数据 Form form = Meta.BusinessInfo.GetForm(); IDynamicFormViewService dynamicFormViewService = (IDynamicFormViewService)Activator.CreateInstance(Type.GetType("Kingdee.BOS.Web.Import.ImportBillView,Kingdee.BOS.Web")); // 创建视图加载参数对象,指定各种参数,如FormId, 视图(LayoutId)等 BillOpenParameter openParam = new BillOpenParameter(form.Id, Meta.GetLayoutInfo().Id); openParam.Context = ctx; openParam.ServiceName = form.FormServiceName; openParam.PageId = Guid.NewGuid().ToString(); openParam.FormMetaData = Meta; openParam.Status = OperationStatus.ADDNEW; openParam.CreateFrom = CreateFrom.Default; // 单据类型 openParam.DefaultBillTypeId = BillTypeId; openParam.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", false); // 插件 List <AbstractDynamicFormPlugIn> plugs = form.CreateFormPlugIns(); openParam.SetCustomParameter(FormConst.PlugIns, plugs); PreOpenFormEventArgs args = new PreOpenFormEventArgs(ctx, openParam); foreach (var plug in plugs) { plug.PreOpenForm(args); } // 动态领域模型服务提供类,通过此类,构建MVC实例 IResourceServiceProvider provider = form.GetFormServiceProvider(false); dynamicFormViewService.Initialize(openParam, provider); IBillView billView = dynamicFormViewService as IBillView; ((IBillViewService)billView).LoadData(); // 触发插件的OnLoad事件: // 组织控制基类插件,在OnLoad事件中,对主业务组织改变是否提示选项进行初始化。 // 如果不触发OnLoad事件,会导致主业务组织赋值不成功 DynamicFormViewPlugInProxy eventProxy = billView.GetService <DynamicFormViewPlugInProxy>(); eventProxy.FireOnLoad(); if (fillBillPropertys != null) { fillBillPropertys(dynamicFormViewService); } // 设置FormId form = billView.BillBusinessInfo.GetForm(); if (form.FormIdDynamicProperty != null) { form.FormIdDynamicProperty.SetValue(billView.Model.DataObject, form.Id); } return(billView.Model.DataObject); }
public static IBillView CreateBillView(this FormMetadata metadata, Context ctx, Action <BillOpenParameter> openParamAction = null) { //创建用于引入数据的单据view Type type = Type.GetType("Kingdee.BOS.Web.Import.ImportBillView,Kingdee.BOS.Web"); var billView = (IDynamicFormViewService)Activator.CreateInstance(type); //获取表单元素 Form form = metadata.BusinessInfo.GetForm(); //开始初始化billView: //创建视图加载参数对象,指定各种参数,如FormId, 视图(LayoutId)等 //指定FormId, LayoutId BillOpenParameter openParam = new BillOpenParameter(form.Id, metadata.GetLayoutInfo().Id); openParam.Context = ctx; //数据库上下文 openParam.ServiceName = form.FormServiceName; //本单据模型使用的MVC框架 openParam.PageId = Guid.NewGuid().ToString(); //随机产生一个不重复的PageId,作为视图的标识 openParam.FormMetaData = metadata; //元数据 openParam.Status = OperationStatus.ADDNEW; //界面状态:新增 (修改、查看) openParam.PkValue = null; //单据主键:本案例演示新建物料,不需要设置主键 openParam.CreateFrom = CreateFrom.Default; //界面创建目的:普通无特殊目的 (为工作流、为下推、为复制等) openParam.GroupId = string.Empty; //基础资料分组维度:基础资料允许添加多个分组字段,每个分组字段会有一个分组维度。具体分组维度Id,请参阅 form.FormGroups 属性 openParam.ParentId = 0; //基础资料分组:如果需要为新建的基础资料指定所在分组,请设置此属性 openParam.DefaultBillTypeId = string.Empty; //单据类型 openParam.DefaultBusinessFlowId = string.Empty; //业务流程 openParam.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", false); //主业务组织改变时,不用弹出提示界面 openParamAction?.Invoke(openParam); //插件 List <AbstractDynamicFormPlugIn> plugs = form.CreateFormPlugIns(); openParam.SetCustomParameter(FormConst.PlugIns, plugs); PreOpenFormEventArgs args = new PreOpenFormEventArgs(ctx, openParam); foreach (var plug in plugs) { //触发插件PreOpenForm事件,供插件确认是否允许打开界面 plug.PreOpenForm(args); } if (args.Cancel == true) { //插件不允许打开界面 //本案例不理会插件的诉求,继续.... }//end if //动态领域模型服务提供类,通过此类,构建MVC实例 var provider = form.GetFormServiceProvider(); billView.Initialize(openParam, provider); return(billView as IBillView); }
private BillOpenParameter CreateOpenParameter(FormMetadata meta) { Form form = meta.BusinessInfo.GetForm(); // 指定FormId, LayoutId BillOpenParameter openParam = new BillOpenParameter(form.Id, meta.GetLayoutInfo().Id); // 数据库上下文 openParam.Context = this.Context; // 本单据模型使用的MVC框架 openParam.ServiceName = form.FormServiceName; // 随机产生一个不重复的PageId,作为视图的标识 openParam.PageId = Guid.NewGuid().ToString(); // 元数据 openParam.FormMetaData = meta; // 界面状态:新增 (修改、查看) openParam.Status = OperationStatus.ADDNEW; // 单据主键:本案例演示新建物料,不需要设置主键 openParam.PkValue = null; // 界面创建目的:普通无特殊目的 (为工作流、为下推、为复制等) openParam.CreateFrom = CreateFrom.Default; // 基础资料分组维度:基础资料允许添加多个分组字段,每个分组字段会有一个分组维度 // 具体分组维度Id,请参阅 form.FormGroups 属性 openParam.GroupId = ""; // 基础资料分组:如果需要为新建的基础资料指定所在分组,请设置此属性 openParam.ParentId = 0; // 单据类型 openParam.DefaultBillTypeId = ""; // 业务流程 openParam.DefaultBusinessFlowId = ""; // 主业务组织改变时,不用弹出提示界面 openParam.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", false); // 插件 List <AbstractDynamicFormPlugIn> plugs = form.CreateFormPlugIns(); openParam.SetCustomParameter(FormConst.PlugIns, plugs); PreOpenFormEventArgs args = new PreOpenFormEventArgs(this.Context, openParam); foreach (var plug in plugs) {// 触发插件PreOpenForm事件,供插件确认是否允许打开界面 plug.PreOpenForm(args); } if (args.Cancel == true) {// 插件不允许打开界面 // 本案例不理会插件的诉求,继续.... } // 返回 return(openParam); }
private BillOpenParameter CreateOpenParameter(FormMetadata meta) { Form form = meta.BusinessInfo.GetForm(); BillOpenParameter openParam = new BillOpenParameter(form.Id, meta.GetLayoutInfo().Id); openParam.Context = this.Context; openParam.ServiceName = form.FormServiceName; openParam.PageId = Guid.NewGuid().ToString(); openParam.FormMetaData = meta; openParam.Status = OperationStatus.ADDNEW; openParam.PkValue = null; openParam.CreateFrom = CreateFrom.Default; openParam.GroupId = ""; openParam.ParentId = 0; openParam.DefaultBillTypeId = ""; openParam.DefaultBusinessFlowId = ""; openParam.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", false); List <AbstractDynamicFormPlugIn> plugs = form.CreateFormPlugIns(); openParam.SetCustomParameter(FormConst.PlugIns, plugs); PreOpenFormEventArgs args = new PreOpenFormEventArgs(this.Context, openParam); return(openParam); }
public override void PreOpenForm(PreOpenFormEventArgs e) { //Kingdee.BOS.Core.Metadata.OperationStatus.ADDNEW //e.OpenParameter.InitStatus; //this.Model.OpenParameter.InitStatus }
public override void PreOpenForm(PreOpenFormEventArgs e) { base.PreOpenForm(e); }