ActiveReports 报表应用教程 (9)---交互式报表之动态排序

在 ActiveReports 中除了提供对数据源进行排序的功能之外,还提供了最终用户排序功能,最终用户可以对报表进行区域内排序和整个数据源排序,结合数据钻取、过滤等功能可以让用户更方便地分析报表数据。

1、创建报表文件

在应用程序中创建一个名为 rptProductListForSort.rdlx 的 ActiveReports 报表文件,使用的项目模板为 ActiveReports 页面报表,创建完成之后从 VS 的报表菜单项中选择转换为连续页面布局(CPL)报表,将固定页面报表转换为连续页面报表。

2、打开报表资源管理器,并按照以下信息创建报表数据源

名称: NWind_CHS
类型: Micorsoft OleDb Provider
OLE DB 提供程序: Microsoft.Jet.OLEDB.4.0
服务器或文件名称: Data\NWind_CHS.mdb

3、 添加数据集

在新建的 NWind_CHS 数据源上鼠标右键并选择添加数据集菜单项

常规-名称:Products

查询-查询:

SELECT

产品.*, 类别.类别名称,类别.说明 

FROM

产品 

INNERJOIN

类别 

ON

产品.类别ID = 类别.类别ID 

ORDERBY

类别.类别ID;

 

4、设计报表界面

从 Visual Studio 工具箱中将 Table 控件添加到报表设计界面,并将 Products 数据集中的字段拖拽到 Table 的相应列中,得到的设计界面如下:

5、为列头单元格添加动态排序功能

选择列头单元格,在属性对话框中的命令区域点击属性对话框,以打开文本框属性设置对话框,并在交互式排序页面中分别设置以下属性:

产品名称列: 为文本框添加交互式排序功能:True
排序表达式:=[产品名称] 
数据区域或分组排序:选择数据区域或者分组,Table1_Group1 
在此范围内的评估排序表达式:当前范围
单位数量列: 为文本框添加交互式排序功能:True
排序表达式:=[单位数量] 
数据区域或分组排序:选择数据区域或者分组,Table1_Group1 
在此范围内的评估排序表达式:当前范围
单价列: 为文本框添加交互式排序功能:True
排序表达式:=[单价] 
数据区域或分组排序:选择数据区域或者分组,Table1_Group1 
在此范围内的评估排序表达式:当前范围
库存量列: 为文本框添加交互式排序功能:True
排序表达式:=[库存量] 
数据区域或分组排序:选择数据区域或者分组,Table1_Group1 
在此范围内的评估排序表达式:当前范围
订购量列: 为文本框添加交互式排序功能:True
排序表达式:=[订购量] 
数据区域或分组排序:选择数据区域或者分组,Table1_Group1 
在此范围内的评估排序表达式:当前范围
再订购量列: 为文本框添加交互式排序功能:True
排序表达式:=[再订购量] 
数据区域或分组排序:选择数据区域或者分组,Table1_Group1 
在此范围内的评估排序表达式:当前范围

 

6、运行程序

通过 F5 键运行程序,在每列列头的右侧有一个排序图表,点击排序图表可以实现对数据的排序操作:

在线演示及×××地址:

http://www.gcpowertools.com.cn/products/activereports_demo.htm

相关推荐:

Python如何实现拓扑排序_基于入度表与队列处理依赖关系

拓扑排序失败时queue为空但仍有未访问节点,说明图中存在环;应统计全部节点、用in_degree字典记录入度,最终比较result长度与总节点数是否相等来判断。 拓扑排序失败时,queue为空但图中仍有未访问节点怎么办 说明:这代表图中存在环,无法完成拓扑排序。标准实现里,如果最终输出的节点数小于...

Python 中 sorted() 遇到 NaN 时的排序行为解析

Python内置sorted()在含numpy.nan的列表中表现非确定性,根本原因在于NaN不满足任何大小比较(如<恒返回False),导致Timsort算法的比较逻辑失效,结果依赖元素顺序而非数值大小。 python内置`sorted()`在含`numpy.nan`的列表中表现非确定性,根...

高效提取目标数组中满足多组上下界条件的索引列表(基于排序+二分搜索)

本文介绍如何在Python中高效提取目标数组中落在多组动态上下界范围内的元素索引,重点对比原始逐条件布尔掩码法与基于排序+二分搜索(bisect/np.searchsorted)的优化方案,实测numpy版本性能提升达45倍。 本文介绍如何在Python中高效提取目标数组中落在多组动态上下界范围内的...

如何按年份+会议序号自然排序 pandas DataFrame 的列头

本文介绍如何对形如"M1/2023"、"M10/2024"的混合字符串列名,按“年份优先、会议序号次之”进行自然排序(naturalsort),避免"M10/2023"错排在"M2/2023"之前的问题。 本文介绍如何对形如"m1/2023"、"m10/2024"的混合字符串列名,按“年份优先、会议...

如何按年份+会议序号对 Pandas DataFrame 列头进行自然排序

本文介绍如何将形如"m1/2023"、"m10/2024"的列名,按先年份后会议编号(支持数值型自然排序)重新排列,避免字符串排序导致的"m10/2023"错排在"m2/2023"之前的问题。 本文介绍如何将形如"m1/2023"、"m10/2024"的列名,按先年份后会议编号(支持数值型自然排序)...

如何按年份和会议序号对 Pandas DataFrame 列头进行自然排序

本文介绍如何将形如M1/2023、M2/2024的混合列名,按「先年份、后会议编号」的逻辑进行稳定、可扩展的自然排序,避免M10/2023被错误排在M2/2023之前等问题。 本文介绍如何将形如`m1/2023`、`m2/2024`的混合列名,按「先年份、后会议编号」的逻辑进行**稳定、可扩展的自然...

Python排序怎么处理平局_rank()函数method参数各种排名方法

rank(method='average')常致下游出错,因返回浮点数秩(如[5,5,5]→[2.0,2.0,2.0]),破坏整数位置计数逻辑,影响分位数切分或topN筛选的人数准确性。 pd.Series.rank()的method参数到底选哪个 平局时怎么排,取决于你后续要算什么。不是“哪个更标...