SSRS 实用技巧 ---- 为表格添加展开/折叠操做(明细报表)

相信不少人都会遇到这样的需求:当表格按照某几个列分组时,须要为组添加展开和折叠的操做。数据库

最初展示表格的时候只展示最外层分组,而后点击展开后能够查看分组内的明细状况。ide

先来一张效果图,而后再看具体如何实现:工具

 

话很少说,咱们来看看这个功能如何实现。字体

首先建立示例表this

CREATE TABLE [dbo].[DetailReportTestData]
(
    [Category1] [nvarchar](50) NULL,
    [Category2] [nvarchar](50) NULL,
    [Name] [nvarchar](50) NULL,
    [Value1] [int] NULL,
    [Value2] [int] NULL
)

而后造点数据插进去,代码以下:spa

WITH A AS
(
    SELECT 'Name1' AS Name, 3 AS Value1, 4 AS Value2 UNION ALL
    SELECT 'Name2', 4, 5 UNION ALL
    SELECT 'Name3', 6, 66 UNION ALL
    SELECT 'Name4', 78, 22 UNION ALL
    SELECT 'Name5', 55, 66
), B AS
(
    SELECT 'Category21' AS Category2 UNION ALL
    SELECT 'Category22' UNION ALL
    SELECT 'Category23' UNION ALL
    SELECT 'Category24'
),C AS
(
    SELECT 'Category11' AS Category1 UNION ALL
    SELECT 'Category12' UNION ALL
    SELECT 'Category13' UNION ALL
    SELECT 'Category14' UNION ALL
    SELECT 'Category15' UNION ALL
    SELECT 'Category16' UNION ALL
    SELECT 'Category17'
)
INSERT INTO [dbo].[DetailReportTestData]
SELECT C.*, B.*, A.*
FROM A
CROSS JOIN B
CROSS JOIN C

 

 而后在SQL Server Data Tools (SSDT/BIDS) 中建立数据源(DataSource)和数据集(DataSet)3d

数据源为你建立表的数据库,数据集以下:code

SELECT [Category1]
      ,[Category2]
      ,[Name]
      ,[Value1]
      ,[Value2]
FROM [dbo].[DetailReportTestData]

 

而后从工具箱中托一个table 出来,把Name, Value1, Value2 选到table里,以下图:blog

 

 

 

接着依次添加分组Category2, Category1,能够在单元格上点击右键-->Add Group-->Parent Group 而后选择列名来实现,也能够直接把列拖拽到指定的位置来实现,以下图:it

 

 

先看一下预览的效果:

 

 

接下来咱们开始添加可折叠操做,以下图,在Row Groups 窗口里右键点击 Details,而后选择 Group Properties...

 

 

 

而后选择 ”Visibility“, 右边选择”Hide“,下面勾选上”Display can be toggled by this report item:“,在下拉列表里选择Category2

这样,点击Category2 列的时候才会展开 Name 列,以下图:

 

 

而后对Category2 也执行相同的操做,只不过在Display can be toggled by this report item: 部分,选择Category1

这样 点击Category1列 就会展开 Category2 列.

为了美观,我为列头添加了背景颜色以及修改了字体颜色,如今的预览效果以下图:

 这样就能够点击加号来展开详细数据,以下图:

 而后就完成了吗?

不知道你们发现没有,Name, Value1, Value2 三个列,在未展开时显示的是Name1的数据,也就是第一行的数据。按照常理来说,当未展开的时候,当前行应该显示的是汇总数据。

在Row Groups 窗口中的Details 右侧,点击小倒三角按钮,选择Add Total-->After. 以下图

 

 

这样就添加了一个汇总行,咱们为汇总行命名为Total,以下图所示:

 

 

预览一下,效果以下所示:

能够看到,在未展开时,Name, Value1, Value2 显示的是汇总的值,而展开后显示的是具体的明细。

 

 

 

这样就完了吗?对于我这个有强迫症而且有完美主义倾向的人来看还不够好,当展开全部Name 的时候,下面还有一行Total,若是我想看Total的信息,我不展开就好啦,若是展开全部的Name,下面都有一行Total,对表格自己也会增长不少的行,展示更多的数据使得咱们眼花缭乱。

 

那么,我可否实现这样的功能:当Name 未展开时,显示的是汇总值,而展开的时候不显示Total 的行呢?

答案是确定的,仍是在Visibility 属性上面着手。

 

点击表格的任意位置,会显示表格边框。而后右键点击左下角的边框,这是会弹出一个菜单栏,而且同时选中最下面一行。选择Row Visibility...

 

 

这时会弹出一个属性框,按照下图勾选。

这里的选择跟上面的选择不一样是由于,在这样的默认状态是Show的,只有在点击Category2 列时,它才会变成Hide。

 

 

看一下预览效果吧:

 

这样,当展开全部Name 时,则不显示Total 行,未展开全部Name 时,则显示Total 行。大功告成。^_^

 

By: Albert Li, 2015-03-27 13:31:17

相关文章
相关标签/搜索