博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
去除报表参数动态下拉列表框中的Null Value
阅读量:6149 次
发布时间:2019-06-21

本文共 1158 字,大约阅读时间需要 3 分钟。

  hot3.png

通过BIRT设计一份报表,当加和参数并以动态下拉列表框展示参数值时,BIRT会默认自动的添加一个Null Value值,这让人感觉很恶心.在网上查询也没有查到对应的解决办法,无奈自己去看BIRT中report-viewer/birt/pages/parameter/ComboBoxParameter.jsp页面,经测试,大概在178-182行,这段的option对应着动态下拉列表框中的值,通过<%= outputLabel %>展示,查看outputLabel可以发现
String outputLabel = ParameterAccessor.htmlEncode(( label == null)?IBirtConstants.NULL_VALUE_DISPLAY:label);

于是修改<%= outputLabel %>中outputLabel为

outputLabel.equals(ParameterAccessor.htmlEncode(IBirtConstants.NULL_VALUE_DISPLAY)) ? "所有的" : outputLabel

这样Null Value就变成了自定义的文字显示,不过这样所有的参数就只能是相同的,不灵活,而且在级联参数列表中,还会出现Null Value这样的字样. 

最好的解决办法,分析:BIRT既然是自动加上这样的值,就找找它是依据什么规则去添加的,找到这个规则就OK了.参数列表中总要有一个Null值,那我们就直接把这个Null值定义好,并把展现的数据自定义好.说到这可能不太容易理解,看以下截图:

Value是传递给报表使用的; 

Display Text是展现给用户看的;
这两个都是通过一个Data Set 传递的
只要我们在对应的Data Set中添加上一个Value为Null的id值,再把想要呈现的文字赋予给name即可.
主要实现:修改SQL,在原来的SQL基础上,再UNION一个从伪表中查出的一组数据,即值为null的id,自定义文本的name:
([原来的sql]) UNION (SELECT NULL AS id, '所有的' as name FROM DUAL)

当然前后SQL查询的字段数量要一致.

这样再次预览报表时Null Value就不见了,展示的而是在伪表查询语句中我们自定义的文本

在此记录一下,也方便自己以后使用,希望能帮到需要的朋友.

另外:

一般我们希望我们自定义的文本展现的列表中的第一个位置,这个通过参数的排序就搞定了,只要按照要传递给报表的字段排序即可,如上例,按id排序,其为null,自然就排在第一位了.

转载于:https://my.oschina.net/lhplj/blog/186801

你可能感兴趣的文章
修改计算机MAC地址(win7)
查看>>
linux下如何挂接(mount)光盘镜像文件、移动硬盘、U盘、Windows网络共享和NFS网络共享...
查看>>
shell逻辑控制语句之case
查看>>
我的友情链接
查看>>
重装系统再也不用担心桌面文件丢失了
查看>>
家用NAS也可以配置iSCSI盘
查看>>
我的友情链接
查看>>
MySQL复制表结构和数据SQL语句
查看>>
网站安全那些事
查看>>
清理prometheus指定key的数据
查看>>
html: Table合并行和列
查看>>
WP7开发学习笔记----1
查看>>
分布式文件系统FastDFS 集群安装
查看>>
怎么知道自己系统是32位,还是64位?
查看>>
前端,移动开发者,UI须懂: 不同设备的之间的尺寸
查看>>
让我们一起Go(四)
查看>>
信息防泄露:如何为企业数据设一道安全关卡?
查看>>
Linux 路由转发功能的开启
查看>>
linux监控cacti配置教程(6)
查看>>
jvm 内存分配
查看>>