二开案例- DataChanged事件 + 单据新增来源

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

二开案例- DataChanged事件 +  单据新增来源

      DataChanged是当单据内字段值有发生改变时会触发的一个事件,同时DataChanged事件提供了字段操作之前的数据e.OldValue 以及字段变更值 e.NewValue,这两个属性可以方便我们做很多操作。同时,值得注意的是, DataChanged事件当中并不存在 e.Cancel 属性 无法直接通过DataChanged 事件阻止 值更新事件的 执行 。


       想要校验变更前后值的合法性得通过BeforeUpdateValue事件当中去获取字段当前值和 e.value 当中的数据包进行判断,如果操作之后的数据包不符合规范,可以通过e.Cancel =True 终止当前值更新事件的执行,进而达到校验的目的。


        单据的新增状态实际上区分为多种状态,那么该如何区分呢?,比如说我想做的插件仅希望单据通过复制新增的方式才生效。

         最好的方式就是通过 this.View.OpenParameter.CreateFrom 属性来区分。

        或者说 也可以通过AfterCopyData 和 AfterCreateNewData 来区分数据是通过复制新增还是正常新增


using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【单据插件】获取新增单据来源
    /// </summary>
    [Description("【单据插件】获取新增单据来源"), HotUpdate]
    public class GetCreateFromBillPlugIn : AbstractBillPlugIn
    {
        public override void AfterBindData(EventArgs e)
        {
            base.AfterBindData(e);
            var msg = "";
            switch (this.View.OpenParameter.CreateFrom)
            {
                case CreateFrom.Default:
                    msg = "正常新增";
                    break;
                case CreateFrom.Copy:
                    msg = "复制新增";
                    break;
                case CreateFrom.Draw:
                    msg = "选单新增";
                    break;
                case CreateFrom.Push:
                    msg = "下推新增";
                    break;
            }
            this.View.ShowMessage("新增界面来源:" + msg);
        }
    }
}

   具体代码参照 官方文档 https://wenku.my7c.com/article/377452105784652288?productLineId=1&isKnowledge=2      

二开案例- DataChanged事件 + 单据新增来源

DataChanged是当单据内字段值有发生改变时会触发的一个事件,同时DataChanged事件提供了字段操作之前的数据e.OldValue 以及字段变...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息