电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开案例.服务插件.界面刷新保存操作在后台直接SQL修改的数据

来源:金蝶云社区作者:金蝶2024-09-235

二开案例.服务插件.界面刷新保存操作在后台直接SQL修改的数据

【应用场景】

保存操作,在服务插件中,用SQL或者存储过程直接改了某些字段的数据,虽然在BOSIDE,设置了保存操作后刷新这些字段,但界面上这些字段的值并未及时刷新。

原因说明:操作后刷新字段,对于涉及到需要去数据库重新捞数据这种级别的刷新,目前只有状态转换类的操作(例如提交审核反审核)和空操作才会去数据库重新读取数据,而其他操作则只是将内存数据包中的数据刷新到界面。

保存操作并不在此范围,因此用SQL改了字段的数据后,界面不会刷新,此时可以使用表单插件进行强制刷新。


【案例演示】

采购订单,文本字段,在服务插件中用SQL修改数据,在表单插件中强制刷新,使得界面可以正确显示修改后的数据。



【实现步骤】

<1>编写服务插件,用于演示后台用SQL修改字段的数据,代码如下。

using Kingdee.BOS.App.Data;

using Kingdee.BOS.Core.Bill;

using Kingdee.BOS.Core.Bill.PlugIn;

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.Collections.Generic;

using System.ComponentModel;


namespace Jac.XkDemo.BOS.App.PlugIn

{

    /// <summary>

    /// 【服务插件】界面刷新保存操作在后台直接SQL修改的数据

    /// </summary>

    [Description("【服务插件】界面刷新保存操作在后台直接SQL修改的数据"), HotUpdate]

    public class UpdateViewAfterSqlModifyDataServicePlugIn : AbstractOperationServicePlugIn

    {

        /// <summary>

        /// 需要重新加载的字段

        /// </summary>

        readonly string[] reloadKeys = new string[] { "F_Jac_Remarks", "FChangeReason" };


        public override void OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e)

        {

            base.OnPrepareOperationServiceOption(e);

            if (this.FormOperation.OperationId == 8)

            {

                if (!string.IsNullOrWhiteSpace(this.FormOperation.LoadKeys) && this.FormOperation.LoadKeys != "null")

                {

                    // 设置操作完后刷新字段

                    var loadKeys = KDObjectConverter.DeserializeObject<List<string>>(this.FormOperation.LoadKeys);

                    if (loadKeys == null)

                    {

                        loadKeys = new List<string>();

                    }

                    foreach (var reloadKey in reloadKeys)

                    {

                        if (!loadKeys.Contains(reloadKey))

                        {

                            loadKeys.Add(reloadKey);

                        }

                    }

                    this.FormOperation.LoadKeys = KDObjectConverter.SerializeObject(loadKeys);

                }

            }

        }


        public override void EndOperationTransaction(EndOperationTransactionArgs e)

        {

            base.EndOperationTransaction(e);

            if (this.FormOperation.OperationId == 8)

            {

                foreach (var dataEntity in e.DataEntitys)

                {

                    // 直接SQL修改备注字段的数据

                    var sql = stri

二开案例.服务插件.界面刷新保存操作在后台直接SQL修改的数据

【应用场景】保存操作,在服务插件中,用SQL或者存储过程直接改了某些字段的数据,虽然在BOSIDE,设置了保存操作后刷新这些字段,但界面上...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信