二开案例.列表插件.列表自动刷新
【应用场景】
列表自动刷新。
关于此方案的风险说明:
<1>列表刷新会非常消耗性能,请合理评估服务器性能能否支撑多端多用户自动刷新列表数据造成的性能压力。
<2>CustomEvents由前端发出,前端可能会异常,导致自动刷新在运行一段时间后失效。
【案例演示】
采购订单列表,打开后自动刷新列表。
【实现步骤】
<1>编写列表插件,代码如下。
using Kingdee.BOS.Core.Const; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.List.PlugIn; 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 AutoRefreshListPlugIn : AbstractListPlugIn { const string Event_GetDate = "RefreshList"; private bool isStart = false; public override void AfterBindData(EventArgs e) { base.AfterBindData(e); if (!isStart) { // 因为ListView.Refresh()会再次触发AfterBindData事件,所以这里要加控制,只在列表首次打开的时候启动自定义的CustomEvents事件。 isStart = true; DoRefresh(); } } public override void CustomEvents(CustomEventsArgs e) { base.CustomEvents(e); if (e.Key.Equals(Event_GetDate, StringComparison.OrdinalIgnoreCase)) { this.ListView.Refresh(); 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秒后执行一次,且只执行1次。 para["data"] = data; this.View.AddAction(JSAction.FireCustomRequest, para); } } }
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展采购订单,注册列表插件,保存元数据,开发完毕。
【功能验证】
<1>登录业务站点,打开采购订单列表。列表每隔3秒自动刷新一次。
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.列表插件.列表自动刷新
【应用场景】列表自动刷新。关于此方案的风险说明:<1>列表刷新会非常消耗性能,请合理评估服务器性能能否支撑多端多用户自动刷新列表数据...
点击下载文档
本文2024-09-23 04:01:49发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-162656.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章