BPM实例方案分享:表单子表自动填入数据

软件环境:H3 BPM 9.2.7

 

业务需求:

现在想要实现一个效果:在打开表单、选择合同阶段后能够读取后台数据,将多行数据自动填入下方的子表。

 

本文将用三种方法实现自动填入子表的功能。

 

方法一

前台使用如下几个函数就可以实现了,在合同的onchange事件获取数据以后处理。

 

复制代码

//获取子表

var dtl = $.MvcSheetUI.GetElement("子表名").SheetGridView();

  

//增加子表行

dtl.addbtn.click();  或 dtl._AddRow();

  

//设置子表明细数据

$.MvcSheetUI.SetControlValue("子表字段名", "", row);

 

 

方法二:

或者使用后台处理数据的方式

 

复制代码

// 执行后台事件

            $.MvcSheet.Action(

                {

                    Action: "TestAction",   // 后台方法名称

                    Datas: ["输入参数"],    // 输入参数,格式 ["{数据项名称}","String值","控件ID"],当包含数据项名称时 LoadControlValue必须为true

                    LoadControlValue: true, // 是否获取表单数据

                    PostSheetInfo: true,    // 是否获取已经改变的表单数据

                    OnActionDone: function (e) {

                        // 执行完成后回调事件

                    }

                }

 

 

后台方法里面直接修改ActionContext.InstanceData["子表名"]中的数据。

 

 

方法三:后台添加

 

复制代码

public override MvcViewContext LoadDataFields()

{

    if (this.ActionContext.IsOriginateMode)

           {

            BizObject[] bizObjects = new BizObject[数组长度];

            BizObjectSchema childSchema = this.ActionContext.Schema.GetProperty("子表编码").ChildSchema;

             for (int i = 0; i < DataTable0.Rows.Count; i++)

                           {

                               bizObjects = new BizObject(this.ActionContext.Engine, childSchema, this.ActionContext.User.UserID);

                               bizObjects["字段编码"] = "";

                               bizObjects["字段编码"] = "";

  

                           }

            this.ActionContext.InstanceData["子表编码"].Value = bizObjects;

           }

           return base.LoadDataFields();

}

posted @ 2017-05-17 14:48  一面开发一面流程  阅读(1201)  评论(0编辑  收藏  举报