SSRS 如何将有序序列数据按顺序排列为3x3表格布局?
控件选择结论
优先使用Matrix控件实现该3行3列的按序排列布局,也可使用List控件实现,Table控件适配该场景的成本更高,不推荐。
具体实现方案
方案1:Matrix控件实现(推荐,适配动态数据量场景)
- 第一步:为原始数据集新增两个计算字段,用于定位每个数据的行列位置:
- 行号字段:表达式为
=Ceiling(Fields!序列ID.Value / 3),ID 1-3对应行号1,4-6对应行号2,7-9对应行号3 - 列号字段:表达式为
=((Fields!序列ID.Value - 1) Mod 3) + 1,ID 1、4、7对应列号1,2、5、8对应列号2,3、6、9对应列号3
- 行号字段:表达式为
- 第二步:插入Matrix控件,完成基础配置:
- 行组的分组依据设置为新增的
行号字段 - 列组的分组依据设置为新增的
列号字段 - 数据单元格绑定需要展示的字段,仅展示序列ID的话直接绑定
=Fields!序列ID.Value
- 行组的分组依据设置为新增的
- 第三步:可选优化:隐藏行组、列组的默认表头,即可得到无多余内容的3*3数据布局。
方案2:List控件实现(适配列数固定场景)
- 第一步:同上为数据集新增
行号计算字段 - 第二步:插入List控件,设置List的分组依据为
行号,此时每一行List对应3个连续的序列数据 - 第三步:在List内容区域横向放置3个文本框,分别绑定Lookup表达式获取对应位置的数据:
- 第一列文本框:
=Lookup((Fields!行号.Value -1)*3 +1, Fields!序列ID.Value, Fields!需要展示的字段.Value, "你的数据集名称") - 第二列文本框:
=Lookup((Fields!行号.Value -1)*3 +2, Fields!序列ID.Value, Fields!需要展示的字段.Value, "你的数据集名称") - 第三列文本框:
=Lookup((Fields!行号.Value -1)*3 +3, Fields!序列ID.Value, Fields!需要展示的字段.Value, "你的数据集名称")
- 第一列文本框:
Table控件不适用的原因
Table控件原生为固定列数、仅支持纵向按行扩展的特性,要实现横向按序排列多列数据需要编写大量自定义表达式,维护成本高,因此不推荐使用。
内容的提问来源于stack exchange,提问作者MikiMeow_
相关产品推荐
相关产品推荐

