zoukankan      html  css  js  c++  java
  • 如何让列表实现任意字段类型的排序

    在第一次参加报表比赛时用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创建下拉框,并为其设置静态值,运行效果如下图所示:

    操作视频录像上传到论坛中,下载地址http://www.cognoschina.net/club/thread-10265-1-1.html

  • 相关阅读:
    [BZOJ2809][Apio2012]dispatching
    [BZOJ4584][Apio2016]赛艇
    [BZOJ3206][Apio2013]道路费用
    [codeforces551E]GukiZ and GukiZiana
    [BZOJ3809]Gty的二逼妹子序列
    [BZOJ3289]Mato的文件管理
    [BZOJ3052][UOJ#58][WC2013]糖果公园
    [SPOJ10707]Count on a tree II
    [BZOJ1086][SCOI2005]王室联邦
    python小知识
  • 原文地址:https://www.cnblogs.com/interboy/p/1869982.html
Copyright © 2011-2022 走看看