二开案例.表单插件.值更新事件之更新自己

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

二开案例.表单插件.值更新事件之更新自己

【应用场景】当某字段发生值更新事件时,插件捕获该事件并再次修改该字段的值。

【案例演示】采购订单,采购日期,如果录入的日期不是当前周的周一,就将其改为当前周的周一。

【实现步骤】

<1>编写表单插件,代码如下。

using Kingdee.BOS.Core.DynamicForm.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Util;

using System;

using System.ComponentModel;


namespace Jac.XkDemo.BOS.Business.PlugIn

{

    /// <summary>

    /// 【表单插件】值更新事件之更新自己

    /// </summary>

    [Description("【表单插件】值更新事件之更新自己"), HotUpdate]

    public class DataChangedEventInvokeSelfFormPlugIn : AbstractDynamicFormPlugIn

    {

        public override void DataChanged(DataChangedEventArgs e)

        {

            base.DataChanged(e);


            if (e.Field.Key.Equals("FDate", StringComparison.OrdinalIgnoreCase))

            {

                // 日期字段值更新事件

                var newValue = Convert.ToDateTime(e.NewValue);

                if (newValue.DayOfWeek != DayOfWeek.Monday)

                {

                    // 如果日期不是本周一,就设置为本周一

                    var monday = DateTime.Now.Date.AddDays(1 - (int)DateTime.Now.DayOfWeek);

                    this.Model.DataObject["Date"] = monday;

                    this.View.UpdateView("FDate");

                }

            }

        }

    }

}



<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展采购订单,设置采购日期字段的【即时触发更新事件】属性为勾选状态,注册表单插件,保存元数据,开发完毕。


现在可以登录业务站点,打开采购订单编辑界面,采购日期输入非本周一的日期,检验一下插件的控制效果啦。

将采购日期设置为21号并焦点移开后,采购日期被重新设置为18号。




【知识点】

<1>平台内部对Model.SetValue接口做了限制,如果对一个字段连续重复调用Model.SetValue接口,只有第一次的调用会被执行,后续的调用都会被取消,导致对字段赋值失败。

<2>除了本文演示的方案,还可以通过CustomEvents事件,延迟触发值更新事件。















【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.表单插件.值更新事件之更新自己

【应用场景】当某字段发生值更新事件时,插件捕获该事件并再次修改该字段的值。【案例演示】采购订单,采购日期,如果录入的日期不是当前周...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息