二开案例.表单插件.列表选择分组后进入新增界面时强制触发分组字段的值更新事件
【应用场景】
列表选择分组后进入新增界面时,会自动携带列表上选择的分组到单据上的分组字段,但是并不会触发分组字段的值更新事件,导致依附在该字段上的值更新事件或者实体服务规则通通失效。此时可通过插件强制触发一下分组字段的值更新事件。
【案例演示】
物料上新增一个复选框,通过实体服务规则让物料分组和复选框联动,当从物料列表选中某个物料分组后进入物料新增界面,能触发物料分组相关的实体服务规则。
【测试环境准备】
<1>BOSIDE扩展物料,新增复选框,单据头新增实体服务规则,保存元数据。
新增实体服务规则:
前提条件:物料分组编码首字符是0时勾选复选框
FMaterialGroup <> null AND FMaterialGroup.FNumber.startswith('0')
为真计算公式:
为假计算公式:
【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】列表选择分组后进入新增界面时强制触发分组字段的值更新事件
/// </summary>
[Description("【表单插件】列表选择分组后进入新增界面时强制触发分组字段的值更新事件"), HotUpdate]
public class InvokeGroupFieldDataChangedEventFormPlugIn : AbstractDynamicFormPlugIn
{
public override void AfterBindData(EventArgs e)
{
base.AfterBindData(e);
var groupValue = this.View.Model.GetValue("FMaterialGroup");
if (groupValue != null)
{
this.View.Model.SetValue("FMaterialGroup", null);
this.View.Model.SetValue("FMaterialGroup", groupValue);
}
}
}
}
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展物料,注册表单插件,保存元数据,开发完毕。
对应Python插件代码如下:
# 【Python】列表选择分组后进入新增界面时强制触发分组字段的值更新事件
def AfterBindData(e):
groupValue = this.View.Model.GetValue("FMaterialGroup");
if (groupValue != None):
this.View.Model.SetValue("FMaterialGroup", None);
this.View.Model.SetValue("FMaterialGroup", groupValue);
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表单插件.列表选择分组后进入新增界面时强制触发分组字段的值更新事件
本文2024-09-23 04:07:56发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-163338.html