二开案例.单据插件.重新加载基础资料字段引用数据包

【应用场景】
基础资料引用数据包中的某些数据已经被修改了,当前单据界面因为有数据缓存,无法及时将变化后的数据在界面上及时刷新显示。
【案例演示】
采购订单界面上有一个基础资料属性字段,用于显示供应商的注册编码,保存采购订单的时候,后台会修改供应商的注册编码,希望修改后的供应商的注册编码能在当前单据界面上即时刷新显示。

【实现步骤】
<1>编写单据插件,用于刷新采购订单界面上的基础资料属性字段的数据,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.App.Core;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Const;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System.Collections.Generic;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【单据插件】重新加载基础资料字段引用数据包
/// </summary>
[Description("【单据插件】重新加载基础资料字段引用数据包"), HotUpdate]
public class ReloadBaseDataFieldRefDataObjectBillPlugIn : AbstractBillPlugIn
{
public override void AfterDoOperation(AfterDoOperationEventArgs e)
{
base.AfterDoOperation(e);
if (e.Operation.OperationId == 8 && e.OperationResult.IsSuccess)
{
// 保存操作执行成功后,刷新供应商字段的引用数据包
var field = (BaseDataField)this.View.BusinessInfo.GetField("FSupplierId");
var objSupplier = (DynamicObject)this.View.Model.GetValue(field.Key);
if (objSupplier != null)
{
var dataObj = BusinessDataServiceHelper.LoadFromCache(this.Context, new[] { objSupplier[0] }, field.RefFormDynamicObjectType);
if (dataObj != null && dataObj.Length > 0)
{
field.DynamicProperty.SetValue(this.View.Model.DataObject, dataObj[0]);
//this.View.UpdateView(field.Key);
this.View.UpdateView("F_Jac_BaseProperty");
}
}
}
}
}
}
<2>编写服务插件,用于修改供应商的注册编码,代码如下:
using Kingdee.BOS;
using Kingdee.BOS.App.Core;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Const;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System.Collections.Generic;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【服务插件】修改基础资料数据并清除基础资料数据缓存
/// </summary>
[Description("【服务插件】修改基础资料数据并清除基础资料数据缓存"), HotUpdate]
public class SetBaseDataAndClearCacheOperationServicePlugIn : AbstractOperationServicePlugIn
{
public override void BeginOperationTransaction(BeginOperationTransactionArgs e)
{
base.BeginOperationTransaction(e);
foreach (var dataEntity in e.DataEntitys)
二开案例.单据插件.重新加载基础资料字段引用数据包
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



