单据列表动态生成合并表头效果

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

单据列表动态生成合并表头效果

场景需求:

飘过~~,单据列表也想和编辑单据体那样有合并表头的效果,正常在BOS设计器里面,针对单据体字段,所需要的列合并,则只要定义字段的标题即可,如:“物料&物料编号”,“物料&物料名称”,“物料&规格”...,那么在单据列表实际没有直接配置地方,但是可以二开列表插件动态组合生成


效果图(以下以采购订单列表举例)

image.webp


二开插件样例:

1、列表插件,继承基类是AbstractListPlugIn

public override void ListCreateColumns(ListCreateColumnsEventArgs e)
        {
            Dictionary<string, List<JSONObject>> mergeCols = new Dictionary<string, List<JSONObject>>();
            //先根据定义在平台已经构建好的列信息找出相应构建包
            foreach (JSONObject obj in e.Columns)
            {
                string fieldname = obj is JSONObject ? (obj as JSONObject).GetValue<string>("dataIndex", "") : "";
                if ((new List<string>() { "FQty", "FBaseUnitQty", "FPriceUnitQty" }).Contains(fieldname))
                {
                    //如:FQty,FBaseUnitQty,FPriceUnitQty放在一起,合并为数量的二级表头,标识为 shuliang
                    if (mergeCols.ContainsKey("shuliang"))
                    {
                        mergeCols["shuliang"].Add(obj);
                    }
                    else
                    {
                        mergeCols.Add("shuliang", new List<JSONObject>() { obj });
                    }
                }
                else if ((new List<string>() { "FDeliveryDate", "FLocationId.FName" }).Contains(fieldname))
                {
                    //如:FDeliveryDate,FLocationId.FName放在一起,合并为交货信息的二级表头,标识为 jiaohuoinfo
                    if (mergeCols.ContainsKey("jiaohuoinfo"))
                    {
                        mergeCols["jiaohuoinfo"].Add(obj);
                    }
                    else
                    {
                        mergeCols.Add("jiaohuoinfo", new List<JSONObject>() { obj });
                    }
                }
            }
            //找出列集合之后,进行更改合并列头
            foreach (var mcol in mergeCols)
            {
                if (mcol.Value.Count == 1)
                {
                    //如果单据列对应合并只是1列,则不处理合并列
                    continue;
                }
                foreach (JSONObject obj in mcol.Value)
                {
                    string header=obj.GetValue<string>("header","");
                    switch (mcol.Key)
                    {
                        case "shuliang":
                            obj["header"] = "数量&" + header;
                            break;
                        case "jiaohuoinfo":
                            obj["header"] = "交货信息&" + header;
                            break;
                        default:
                            break;
                    }
                }
            }
            base.ListCreateColumns(e);
     }


单据列表动态生成合并表头效果

场景需求:飘过~~,单据列表也想和编辑单据体那样有合并表头的效果,正常在BOS设计器里面,针对单据体字段,所需要的列合并,则只要定义字...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息