去除报表参数动态下拉列表框中的Null Value

通过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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值