壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 425|回复: 0

如何让列表实现任意字段类型的排序

[复制链接]
发表于 2012/3/17 09:18:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
在第一次参加报表比赛时用JavaScript实现了列表基于数值型字段的排序
http://www.cognoschina.net/home/space.php?uid=652&do=blog&id=547
针对数值字段排序就是将列表中的一个数据项设置为升序,根据参数判断如果是升序就直接显示数值,如果是降序则执行-1*数值。
数据项的表达式为
IF ( ?sorttype? = 'UP' ) THEN
(
[职工人数]
)
ELSE
( -1*[职工人数] )
上述思路只能对数值型字段进行排序,而字符型的排序却无能为力,后来有网友也讨论过如何对字符型进行排序,那个网友得出用两个数据项来实现,本来想把讨论的帖子贴出来给大家分享的,可今天翻了半天之前的帖子,没有找到。
我这里来说一下实现思路
两个数据项在列表中分别设置为升序、降序。升序数据项的表达式思路如下:
IF ( ?sorttype? = 'UP' ) THEN
(
//根据参数判断要展现的列,比如 IF ( ?sortcol? = 'A' ) THEN([人员姓名])ELSE([职工人数])
)
ELSE ( null )
降序数据项的表达式思路如下:
IF ( ?sorttype? = 'DOWN' ) THEN
(
//根据参数判断要展现的列,比如 IF ( ?sortcol? = 'A' ) THEN([人员姓名])ELSE([职工人数])
)
ELSE ( null )
所以当传递的参数是UP时,起决定性作用的是升序的数据项,因为降序的数据项为null
当传递的参数为DOWN时,起决定性作用的是降序的数据项,因为升序的数据项为null

思路明白了后我们来看如何在ReportStudio中实现排序
我们基于Cognos式样的GO 数据仓库 (查询)包创建一个简单的list报表如下图所示:

其中年份、组织名称(级别3)是字符型数据,工资是数值型
切换到查询资源管理器,为列表所用查询增加两个数据项升序、降序
升序的表达式为
IF ( ?sorttype? = 'UP' ) THEN
(
IF ( ?sortcolumn? = 'A') THEN
    ( [年份] )
ELSE
    ( IF ( ?sortcolumn? = 'B' ) THEN
    ( [组织名称(级别 3)] )
ELSE
    ( [工资] ) )
)
ELSE
( null )
降序的表达式为:
IF ( ?sorttype? = 'DOWN' ) THEN
(
IF ( ?sortcolumn? = 'A') THEN
    ( [年份] )
ELSE
    ( IF ( ?sortcolumn? = 'B' ) THEN
    ( [组织名称(级别 3)] )
ELSE
    ( [工资] ) )
)
ELSE
( null )

将升序和降序放到列表中,将升序所在列设置排序操作为升序,降序所在列排序操作为降序,如下图所示:

为了方便演示,我们分别为sorttype和sortcolumn创建下拉框,并为其设置静态值,运行效果如下图所示:


更多图片 小图 大图
组图打开中,请稍候......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 14:01 , Processed in 0.016145 second(s), 16 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表