• 不用JavaScript实现列表排序(利用钻取实现)


    实现演示的视频已经发到论坛中http://www.cognoschina.net/club/thread-10286-1-1.html

    第一次参加报表比赛时用JavaScript实现列表数值字段的排序,虽然这个很实用,但是JavaScript对不同内核的浏览器支持程度不一样,而且一般做报表的开发人员可能对JavaScript都不是很熟悉,所以虽然我认为我写的已经很详细了,但是还是有好多网友在使用的过程中遇到很多问题,问我应该怎么调试JavaScript,然而JavaScript却不是三言两语能偶说清楚的。后来我突然想到是不是可以利用追溯来实现排序呢?我试了一下午,终于有所成。后来我就因为其他事耽搁了个把月,今天利用周末整理一下。发给大伙

    排序实现的思路这里就不提了,可以参考我前两天发的博文

    用基于自身的追溯来实现排序,即:报表的钻取对象还是它自己,在钻取过程中将参数改变,实现排序。

    以前两天发的任意字段列表排序例。打开排序的列表如下图所示

     

    为了能够在追溯中改变参数,所以必须多创建几个数据项,我们先需要的数据项有5个,升序、降序(UP、DOWN)以及三个需要排序的列(A、B、C)。如下图所示:

     

    数据项表达式就是参数所要接收的值。如图所示UP数据项的表示为’UP’。

    接下来为列头增加排序显示的图片,先点击解锁,并将图像组件放到“年份”列头中,如下图所示:

     

    点击图片,在属性栏中的来源类型改为“报表表达式”,并将表达式的内容设置为

    IF ( ParamValue('sorttype') = 'UP' )

    THEN

        ('http://127.0.0.1:9300/p2pd/pat/images/sortState_ascending.gif' )

    ELSE

        ('http://127.0.0.1:9300/p2pd/pat/images/sortState_descending.gif' )

    该表达式根据传递的参数动态显示图片。

    接下来为年份创建追溯定义,为了便于理解,我们将名称定义为UP,将目标报表选中自身

     

    点击编辑设置传递的参数

     

    将方法选择为“传递数据项值”,并未参数设置相应的值,点击确定

    我们在复制一下年份,并该其追溯名称为DOWN,将sorttype传递的数据项值改为DOWN

     

    这时运行报表,看到年份列有两个年份,点击前一个会按照年份进行升序排列,点后面一个会按照降序排列。

    为了避免这种现象,我们需要用条件样式来控制显示。

    切到条件资源管理器中,新建一个布尔值变量IsUP,表达式设置为

    ParamValue('sorttype') = 'UP'

    将两个年份的样式变量都设置为IsUP,并将前一个年份为“是”时不显示(方框类型设置为空),后一个年份为“否”时不显示。

    再次运行报表就只有一个年份,点击就会进行排序,并且图片提示当前是升序还是降序

     

    再次进入条件资源管理器,创建一个字符串变量sortColumn,表达式为:

    ParamValue('sortcolumn')

    并设置3个值A、B、C

     

    选中图片,并将sortColumn设为样式变量,根据参数的值判断图片是否显示。以年份为例,随对应的参数值为A,所以需要经B、C、其他所对应的方框类型设置为空。

    此时一个字段的排序就已经完成了,我们将这三个对象复制一下啊,分别粘贴到后面几列中,然后分别设置追溯传递的值和相应的样式就可以了。

    最终效果如下图所示

     

  • 相关阅读:
    数组、List和ArrayList的区别
    Spring 学习笔记(一)——Spring 基本概念和体系概览
    解压大文件提示C盘空间不够的问题
    在Struts2 Action中快速简便的访问Request、Session等变量
    Java 以及JEE环境快速搭建
    JAVA对象布局之对象头(Object Header)
    Docker之两小时入门
    Java创建多线程的几种方式
    JAVA并发之加锁导致的活跃性问题
    JAVA并发之多线程引发的问题剖析以及如何保证线程安全
  • 原文地址:https://www.cnblogs.com/interboy/p/1872026.html
Copyright © 2020-2023  润新知