二开案例.单据插件.自定义事件应用之模拟触发其它事件

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

二开案例.单据插件.自定义事件应用之模拟触发其它事件

【应用场景】在后台可插件编程位置,模拟触发前端的某些事件。

【案例演示】采购订单,点击主菜单按钮,触发供应商字段的F7开窗查找事件(F7ButtonClick)。

【实现步骤】

<1>编写单据插件,实现后端模拟触发前端的某些事件的功能,代码如下。

using Kingdee.BOS.Core.Bill.PlugIn;

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

using Kingdee.BOS.JSON;

using Kingdee.BOS.Util;

using Kingdee.BOS.Web.DynamicForm;

using System.ComponentModel;


namespace Jac.XkDemo.BOS.Business.PlugIn

{

    /// <summary>

    /// 【单据插件】自定义事件应用之模拟触发其它事件

    /// </summary>

    [Description("【单据插件】自定义事件应用之模拟触发其它事件"), HotUpdate]

    public class FireEventByCustomEventsBillPlugIn : AbstractBillPlugIn

    {

        public override void BarItemClick(BarItemClickEventArgs e)

        {

            base.BarItemClick(e);

            if (e.BarItemKey == "tbFireEvent")

            {


                // 方式1:延时触发

                SendCustomEventAction();

                // 方式2:直接触发

                //((DynamicWebFormView)this.View).F7ButtonClick("FSupplierId", "", 0);

                //((DynamicWebFormView)this.View).MainBarItemClick("tbSave");

                //((DynamicWebFormView) this.View).ButtonClick("btnOK","");

            }

        }


        /// <summary>

        /// 从服务端往前端发送触发自定义事件的指令

        /// </summary>

        public void SendCustomEventAction()

        {

            var para = new JSONObject();

            para["key"] = "FSupplierId"; // 自定义事件标识

            para["eventName"] = "CustomEvents"; // 要触发的事件名称

            para["delay"] = "5000"; // 延迟触发间隔(单位毫秒)

            var data = new JSONObject();

            data["do"] = true;

            para["data"] = data; // 自定义事件携带的数据包

            this.View.AddAction("fireCustomRequest", para);

        }



        /// <summary>

        /// 自定义事件

        /// 【事件说明】

        /// 服务端通过AddAction发送【触发CustomEvents事件指令】到前端,前端根据此指令向服务端发送CustomEvents请求,服务端的表单插件的CustomEvents事件此时会被激活。

        /// 可通俗理解为服务端向前端喊话:向我开炮。

        /// </summary>

        /// <param name="e"></param>

        public override void CustomEvents(CustomEventsArgs e)

        {

            base.CustomEvents(e);

            if (e.Key.EqualsIgnoreCase("FSupplierId"))

            {

                var data = JSONObject.Parse(e.EventArgs);

                if (data != null && data.ContainsKey("do"))

                {

                    // 模拟触发基础资料的F7开窗查询事件

                    ((DynamicWebFormView)this.View).F7ButtonClick(e.Key, "", 0);

                }

            }

        }

    }

}



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


<3>BOSIDE扩展采购订单,新增4菜单,注册表单插件,保存元数据,开发完毕。




现在可以登录业务站点,打开采购订单,检验一下插件效果啦。













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

二开案例.单据插件.自定义事件应用之模拟触发其它事件

【应用场景】在后台可插件编程位置,模拟触发前端的某些事件。【案例演示】采购订单,点击主菜单按钮,触发供应商字段的F7开窗查找事件(F7...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息