账表列构建原创
金蝶云社区-拿了你的糖
拿了你的糖
25人赞赏了该文章 3210次浏览 未经作者许可,禁止转载编辑于2021年10月22日 14:30:05

表哥说对账表的列控制不是很清楚,那咱详细说说

image.png

用法一:插件控制

初始化时this.ReportProperty.IsUIDesignerColumns = false;

        public override void Initialize()
        {
            base.Initialize();
            //报表的列通过插件控制
            this.ReportProperty.IsUIDesignerColumns = false;
        }

        GetReportHeaders方法控制报表列

    public override ReportHeader GetReportHeaders(IRptParams filter)
        {
            ReportHeader header = base.GetReportHeaders(filter);
            header.AddChild("FOrgNAME", new LocaleValue("采购组织名称"));
            var child = header.AddChild("FDeptNAME", new LocaleValue("采购部门名称"));
            child.ColIndex = 2;
            header.AddChild("FDate", new LocaleValue("采购日期"));
            header.AddChild("FMaterialNAME", new LocaleValue("物料名称"));
            header.AddChild("FQTY", new LocaleValue("数量"), SqlStorageType.SqlDecimal);
            header.AddChild("FPRICE", new LocaleValue("单价"), SqlStorageType.SqlDecimal);
            return header;
        }

用法二:BOS中拖拽字段

初始化时this.ReportProperty.IsUIDesignerColumns = true;

        public override void Initialize()
        {
            base.Initialize();
            //报表的列通过插件控制
            this.ReportProperty.IsUIDesignerColumns = true;
        }

账表中拖拽字段

image.png

过滤中添加显示隐藏列

image.png


    总结,ReportProperty.IsUIDesignerColumns = true时,不会走GetReportHeaders方法,直接从BOS的单据体中加载列信息,但是会根据过滤框中显示隐藏列信息做判断,不勾选时同样不会显示;ReportProperty.IsUIDesignerColumns = false时,GetReportHeaders方法构建列信息,但是无论过滤框的显示隐藏列是否有,都会显示。


至于下图中这种情况,

image.png

我测试了一下,BOS中配置该字段,ReportProperty.IsUIDesignerColumns = false时,GetReportHeaders方法中也配置相同字段,会走BOS中配置的字段属性(比如文本字段显示链接)。



    最后再分享两个小技巧:

  1. 组合表头,效果如下图:

image.png

    &”字符实现了这一骚操作

    2.列显示顺序

        child.ColIndex = 2;


代码实例如下:

image.png


赞 25