插件案例 —— 单据体的赋值技巧原创
16人赞赏了该文章
3,280次浏览
编辑于2020年08月17日 10:35:51
案例背景
根据某个查询结果,批填分录的情况时常存在,那么怎么快速批填,又标准呢?
代码示例
1.分录构建
界面填充,有视图的情况下,借助视图的相关功能,快速填写单据体,这种方法简单粗暴,对于有界面的情况下,快速填写实体有帮助,但是有的时候存在模型交互情况,需要添加 this.View.Mode.BeginInit()和this.View.Model.EndInit()语句进行初始化构造。
//清空分录包 this.View.Model.DeleteEntryData("分录Key"); //获取实体信息 var rEntity = this.View.Model.BusinessInfo.GetEntity("分录Key"); int index = 0; foreach (var item in invStock) { //新增行 this.View.Model.CreateNewEntryRow(rEntity, index); //按分录填值 this.View.Model.SetValue("行字段", Convert.ToInt64(item["FMATERIALID"]), index); this.View.Model.SetValue("行字段", Convert.ToInt64(item["FAUXPROPID"]), index); index++; } //刷新分录 this.View.UpdateView("F_QPOV_Entity");
2. 动态包属性构建
对于动态表单来说,数据源是完全不确定的情况下,初始化取数过后,在创建数据包的时候,构建业务数据包。缺点,对于基础资料类的数据,仍然需要使用SetValue,或者需要LoadReference,否则看到的基础资料是空值。
public override void CreateNewData(BizDataEventArgs e) { base.CreateNewData(e); if (lstProxy == null || lstProxy.Count<= 0) { return; } //动态对象类型 var billType = this.View.Model.BusinessInfo.GetDynamicObjectType(); //实体包 DynamicObject billObj = new DynamicObject(billType); //Entity var entryEntity = this.View.Model.BusinessInfo.GetEntryEntity("分录Key"); foreach (var item in lstProxy) { var rowObj = new DynamicObject(entryEntity.DynamicObjectType); rowObj["行字段"] = item.Number; rowObj["行字段"] = item.Name; //对属性包填值 entryEntity.DynamicProperty.GetValue<DynamicObjectCollection>(billObj).Add(rowObj); } 给业务包赋值 e.BizDataObject = billObj; }
3. 数据包填充
赞 16
16人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读