阅读:3211
回复:2
|
【实例方案】表单子表自动填入数据
软件环境: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(); } 内容整理于问题互助板块,了解更多前往→http://bbs.h3bpm.com/read.php?tid=1969&fid=8 |
|