插件动态修改列表的列标题正确方法

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

插件动态修改列表的列标题正确方法

有事需要修改列表的某一列的标题。

比如:标准产品中的流程管理中心待办任务列表,把列名为耗时时长(分钟)和超时时长(分钟)改成耗时时长(小时)和超时时时长(小时)

正确做法应该是先在列表加载的时候触发自定义事件

public override void AfterBindData(EventArgs e)
        {
            base.AfterBindData(e);

            (this.View as Kingdee.BOS.Web.List.ListView).FireClientCustomEvents("FList", "UpdateTitles", 100, null);
        }

然后再在自定义事件中发送修改标题的数据包:

public override void CustomEvents(Core.DynamicForm.PlugIn.Args.CustomEventsArgs e)
        {
            base.CustomEvents(e);
            if (e.EventName == "UpdateTitles")
            { //修改列表标题
                Kingdee.BOS.JSON.JSONArray jarray = new JSON.JSONArray();
                Kingdee.BOS.JSON.JSONObject jobConsuming = new Kingdee.BOS.JSON.JSONObject();
                jobConsuming["key"] = "FCONSUMING";
                jobConsuming["header"] = Kingdee.BOS.Resource.ResManager.LoadKDString("耗时时长(小时)", "002406030032018", Kingdee.BOS.Resource.SubSystemType.BOS);
                Kingdee.BOS.JSON.JSONObject jobTimeOut = new Kingdee.BOS.JSON.JSONObject();
                jobTimeOut["key"] = "FTIMEOUT";
                jobTimeOut["header"] = Kingdee.BOS.Resource.ResManager.LoadKDString("超时时长(小时)", "002406030032019", Kingdee.BOS.Resource.SubSystemType.BOS);
                jarray.Add(jobConsuming);
                jarray.Add(jobTimeOut);
                this.View.GetControl("FList").InvokeControlMethod("UpdateFieldStates", jarray);
            }

        }

注意:不要直接在AfterBindData方法中发送修改标题的数据包,因为H5端是先要完成列表初始化之后,才能进一步修改列表,如果同时发送修改标题的数据包到前端,H5端将不起效果。所以要异步另起一个事件去发送修改标题的数据包。


插件动态修改列表的列标题正确方法

有事需要修改列表的某一列的标题。比如:标准产品中的流程管理中心待办任务列表,把列名为耗时时长(分钟)和超时时长(分钟)改成耗时时长...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息