37、动态表单插件,CreateNewData事件,构造数据包原创
10人赞赏了该文章
7,730次浏览
编辑于2020年07月11日 16:52:44
续
使用上一节36代码
1、前面32.4使用OnLoad构造数据包,本节使用CreateNewData构造数据包
public override void CreateNewData(BOS.Core.DynamicForm.PlugIn.Args.BizDataEventArgs e) { base.CreateNewData(e); FBillNo = this.View.OpenParameter.GetCustomParameter("FBillNo").ToString(); string sql = string.Format(@"/*dialect*/select t1.FID,t2.FBILLNO,t3.FNUMBER,t4.FNAME,t1.FREALQTY,FSOORDERNO from T_SAL_OUTSTOCKENTRY t1 inner join T_SAL_OUTSTOCK t2 on t1.FID=t2.FID inner join T_SAL_OUTSTOCKENTRY_R t5 on t1.FENTRYID=t5.FENTRYID left join T_BD_MATERIAL t3 on t1.FMATERIALID=t3.FMATERIALID left join T_BD_MATERIAL_L t4 on t1.FMATERIALID=t4.FMATERIALID and t4.FLOCALEID=2052 where FSOORDERNO='{0}'" , FBillNo); dt = DBUtils.ExecuteDataSet(this.Context, sql).Tables[0]; if (dt.Rows.Count > 0) { //创建界面需要的数据对象 e.BizDataObject = new DynamicObject(this.View.OpenParameter.FormMetaData.BusinessInfo.GetDynamicObjectType()); //获取该业务对象的数据包 BusinessInfo info = this.View.OpenParameter.FormMetaData.BusinessInfo; //获取整个单据体信息 Entity entity = info.GetEntity("F_YDIE_Entity"); Field FOutBillNo = info.GetField("FOutBillNo"); Field FMaterailNo = info.GetField("FMaterailNo"); Field FMaterailName = info.GetField("FMaterailName"); Field FQty = info.GetField("FQty"); Field FID = info.GetField("FID"); //定义单据集合 DynamicObjectCollection rows = (DynamicObjectCollection)entity.DynamicProperty.GetValue(e.BizDataObject); for (int i = 0; i < dt.Rows.Count; i++) { DynamicObject row = new DynamicObject(entity.DynamicObjectType); //赋值方法2 DynamicProperty.SetValue entity.SeqDynamicProperty.SetValue(row, i + 1); info.GetField("FOutBillNo").DynamicProperty.SetValue(row, dt.Rows[i]["FBILLNO"].ToString()); FMaterailNo.DynamicProperty.SetValue(row, dt.Rows[i]["FNUMBER"].ToString()); FMaterailName.DynamicProperty.SetValue(row, dt.Rows[i]["FNAME"].ToString()); FQty.DynamicProperty.SetValue(row, dt.Rows[i]["FREALQTY"].ToString()); FID.DynamicProperty.SetValue(row, dt.Rows[i]["FID"].ToString()); rows.Add(row); } } }
2、注释上一节 OnLoad方法
CreateNewData事件
触发时机
View已完成初始化,开始进入Model数据对象(Model.DataObject)初始化
应用场景
插件自定义Model.DataObject数据包,插件如构建此数据包,即忽略平台构建默认数据包
关键字
新增 默认值 动态
备注
本事件只有在新增表单情况下才会触发,如加载已存在的单据,不触发此事件
3、最终效果,打开销售订单,点按钮,查看销售出库单,和前面32.4一样的效果
总目录链接
https://vip.kingdee.com/article/64993872014591232
Kingdee.Bos.Project.DyForm37.z …(88.30KB)
推荐阅读