SSRS 实用技巧 ---- 为表格添加展开/折叠操作(明细报表)
相信很多人都会遇到这样的需求:当表格按照某几个列分组时,需要为组添加展开和折叠的操作。
最初展现表格的时候只展现最外层分组,然后点击展开后可以查看分组内的明细情况。
先来一张效果图,然后再看具体如何实现:
话不多说,我们来看看这个功能如何实现。
首先创建示例表
- CREATE TABLE [dbo].[DetailReportTestData]
- (
- [Category1] [nvarchar](50) NULL,
- [Category2] [nvarchar](50) NULL,
- [Name] [nvarchar](50) NULL,
- [Value1] [int] NULL,
- [Value2] [int] NULL
- )
然后造点数据插进去,代码如下:
- 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)
数据源为你创建表的数据库,数据集如下:
- SELECT [Category1]
- ,[Category2]
- ,[Name]
- ,[Value1]
- ,[Value2]
- FROM [dbo].[DetailReportTestData]
然后从工具箱中托一个table 出来,把Name, Value1, Value2 选到table里,如下图:
接着依次添加分组Category2, Category1,可以在单元格上点击右键-->Add Group-->Parent Group 然后选择列名来实现,也可以直接把列拖拽到指定的位置来实现,如下图:
先看一下预览的效果:
接下来我们开始添加可折叠操作,如下图,在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
SSRS 实用技巧 ---- 为表格添加展开/折叠操作(明细报表)的更多相关文章
- 【JavaScript实用技巧(二)】Js操作DOM(由问题引发的文章改版,新人大佬都可)
[JavaScript实用技巧(二)]Js操作DOM(由问题引发的文章改版,新人大佬都可!) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人 ...
- iOS实现类似QQ的好友列表,自由展开折叠(在原来TableView的基础上添加一个字典,一个Button)
//直接代码 只包含 折叠展开字典的处理搭建#import "CFViewController.h" @interface CFViewController ()<UITab ...
- Notepad++ 实用技巧
Notepad++是一款开源的文本编辑器,功能强大.很适合用于编辑.注释代码.它支持绝大部分主流的编程语言. 本文主要列举了本人在实际使用中遇到的一些技巧. 快捷键 自定义快捷键 首先,需要知道的是: ...
- PowerDesigner实用技巧小结(3)
PowerDesigner实用技巧小结(3) PowerDesigner 技巧小结 sqlserver数据库databasevbscriptsqldomain 1.PowerDesigner 使用 M ...
- Mac实用技巧之:访达/Finder
更多Mac实用技巧系列文章请访问我的博客:Mac实用技巧系列文章 Finder就相当于windows XP系统的『我的电脑』或win7/win10系统里的『计算机』(打开后叫资源管理器),find是查 ...
- JavaScript 实用技巧和写法建议
1.前言 从大学到现在,接触前端已经有几年了,感想方面,就是对于程序员而言,想要提高自己的技术水平和编写易于阅读和维护的代码,我觉得不能每天都是平庸的写代码,更要去推敲,去摸索和优化代码,总结当中的技 ...
- Buildroot构建指南--快速上手与实用技巧
Buildroot官方全英文使用手册的链接是https://buildroot.org/downloads/manual/manual.html,需要知道每一个细节的朋友,可以仔细查阅,这篇文章只是我 ...
- Hbuilder实用技巧(转)
Hbuilder实用技巧 原创 2016年05月19日 10:25:42 标签: hbuilder 操作 16551 1. Q:怎么实现代码追踪? A:在编辑代码时经常会出现需要跳转到引用文件或者变量 ...
- Buildroot构建指南--快速上手与实用技巧【转】
本文转载自:http://blog.csdn.net/zhou_chenz/article/details/52335634 Buildroot官方全英文使用手册的链接是https://buildro ...
随机推荐
- CENTOS 6.5 平台离线编译安装 Mysql5.6.22
一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...
- [OpenGL超级宝典]专栏前言
我小时候的梦想呢,是做宇航员或者科学家或者是做一款属于自己的游戏,后来前面两个梦想都没有实现,于是我就来实现我的第三个梦想了,,,我呢,也算是零基础,因为我的专业是物联网工程,这个专业覆盖面之广,简直 ...
- Swift enum(枚举)使用范例
//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- 深入浅出Redis-redis哨兵集群
1.Sentinel 哨兵 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所 ...
- 内存映射文件MemoryMappedFile使用
参考资料: http://blog.csdn.net/bitfan/article/details/4438458 所谓内存映射文件,其实就是在内存中开辟出一块存放数据的专用区域,这区域往往与硬盘上特 ...
- IT雇员及外包商选择:人品第一
最近,苹果iOS操作系统和智能手机爆出了一个奇葩故障,在播放特定一段五秒钟的视频时能导致手机死机.唯一的解决办法是按住电源键和Home按键进行手机的重启. 第十八届中国国际高新技术成果交易会在深圳举办 ...
- docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
.net猿遇到了小鲸鱼,觉得越来越兴奋.本来.net猿只是在透过家里那田子窗看外面的世界,但是看着海峡对岸的苹果园越来越茂盛,实在不想再去做一只宅猿了.于是,.net猿决定搭上小鲸鱼的渡轮到苹果园去看 ...
- iOS7 NavigationController 手势问题
在iOS7中,如果使用了UINavigationController,那么系统自带的附加了一个从屏幕左边缘开始滑动可以实现pop的手势.但是,如果自定义了navigationItem的leftBarB ...
- 基于Node.js实现一个小小的爬虫
以前一直听说有爬虫这种东西,稍微看了看资料,貌似不是太复杂. 正好了解过node.js,那就基于它来个简单的爬虫. 1.本次爬虫目标: 从拉钩招聘网站中找出“前端开发”这一类岗位的信息,并作相应页面分 ...