二开案例.表单插件.自动刷新之自定义事件
【应用场景】动态表单界面元素定时自动刷新。
【案例演示】采购订单新增界面上,每3秒自动刷新日期字段为当前时间。
【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS.Core.Const;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】自动刷新之自定义事件
/// </summary>
[Description("【表单插件】自动刷新之自定义事件"), HotUpdate]
public class AutoRefreshFormPlugIn : AbstractDynamicFormPlugIn
{
const string Event_GetDate = "GetDate";
public override void AfterBindData(EventArgs e)
{
base.AfterBindData(e);
DoRefresh();
}
public override void CustomEvents(CustomEventsArgs e)
{
base.CustomEvents(e);
if (e.Key.Equals(Event_GetDate, StringComparison.OrdinalIgnoreCase))
{
var data = JSONObject.Parse(e.EventArgs);
if (data != null && data.ContainsKey("EventData"))
{
this.View.Model.SetValue("F_Jac_Datetime", Convert.ToDateTime(data["EventData"]));
DoRefresh();
}
}
}
/// <summary>
/// 服务端主动发指令给前端,要求前端在指定时间间隔后发送CustomEvents事件到服务端
/// </summary>
private void DoRefresh()
{
var data = new JSONObject();
data["EventData"] = DateTime.Now;
var para = new JSONObject();
para["key"] = Event_GetDate;
para["eventName"] = "CustomEvents";
para["delay"] = "3000"; // 3秒后执行一次
para["data"] = data;
this.View.AddAction(JSAction.FireCustomRequest, para);
}
}
}
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展采购订单,新增一个长日期字段,注册表单插件,保存元数据,开发完毕。
【插件验证】
<1>登录业务站点,打开采购订单新增界面,此时长日期字段的数据开始每3秒刷新一次。
【注意事项】
<1>采用此方案实现定时功能,定时触发的时间间隔会存在一定的误差,误差主要来源于前端和服务端通讯的耗费,这部分耗时是不会计算到您设置的时间间隔中去的,如果网络不好或者服务端处理速度慢,定时的误差会很大。
<2>此方案实现定时功能,完全依赖于服务端回发的CustomEvents事件来形成前后端通讯的闭环,一旦网络异常,某次请求中断,此定时功能也就被迫中断了,且无法自动恢复,因此,此方案实现的定时功能的可靠性也是比较差的。
---------------------------------------------------------------------------------------------------------
【参考资料】
【二开案例.表单插件.自动刷新之定时器事件】https://vip.kingdee.com/article/163244310819751424
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表单插件.自动刷新之自定义事件
本文2024-09-23 04:19:57发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164626.html