天天看點

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["字段編碼"] = "";

                           }

            this.ActionContext.InstanceData["子表編碼"].Value = bizObjects;

           }

           return base.LoadDataFields();

}

本文轉自 lwl_BPM  51CTO部落格,原文連結:http://blog.51cto.com/12438115/1926642,如需轉載請自行聯系原作者

繼續閱讀