二开案例.表单插件.列表选择分组后进入新增界面时强制触发分组字段的值更新事件

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.表单插件.列表选择分组后进入新增界面时强制触发分组字段的值更新事件

【应用场景】

列表选择分组后进入新增界面时,会自动携带列表上选择的分组到单据上的分组字段,但是并不会触发分组字段的值更新事件,导致依附在该字段上的值更新事件或者实体服务规则通通失效。此时可通过插件强制触发一下分组字段的值更新事件。



【案例演示】

物料上新增一个复选框,通过实体服务规则让物料分组和复选框联动,当从物料列表选中某个物料分组后进入物料新增界面,能触发物料分组相关的实体服务规则。


【测试环境准备】

<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

二开案例.表单插件.列表选择分组后进入新增界面时强制触发分组字段的值更新事件

【应用场景】列表选择分组后进入新增界面时,会自动携带列表上选择的分组到单据上的分组字段,但是并不会触发分组字段的值更新事件,导致依...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息