Birt报表自动换行

   一、在onRender事件中写脚本,选中要换行的列,切换到脚本页面,选择onRender事件,输入以下脚本 
        
Js代码   收藏代码
  1. var name = this.getValue();  
  2. name = name.toString();  
  3. var interval = 35;//指定换行的条件,当字符超过这个数时换一行,可以根据列的宽度指定合适的长度  
  4. var n = name.length() / interval|0;  
  5. var re =  name.length() % interval;  
  6. var rslt = "";  
  7. for(var i=0; i<n; i++){  
  8.   var subs = name.substr(i*interval,interval);  
  9.   rslt += ( subs + "\n");  
  10. }  
  11. if(re > 0){  
  12.   rslt += name.substr(n*interval,re);  
  13. }  
  14. this.setDisplayValue(rslt);  

     二、使用text控件,text控件支持动态表达式,这就为我们的脚本有了用武之地 
        
Js代码   收藏代码
  1. <VALUE-OF  format="HTML">//使用html格式,就可以使用<BR>换行符  
  2.     var name = row["M_NAME"];  
  3.     var interval = 35;//指定换行的条件,当字符超过这个数时换一行  
  4.     var n = name.length / interval | 0;  
  5.     var re =  name.length % interval;  
  6.     var rslt = "";  
  7.     for(var i=0; i<n; i++){  
  8.         var subs = name.substr(i*interval,interval);  
  9.         rslt += ( subs + "<BR>");  
  10.     }  
  11.     if(re > 0){  
  12.         rslt += name.substr(n*interval,re);  
  13.     }  
  14.     this.value = rslt;  
  15. </VALUE-OF>  

     
     总结:其实两种方法基本是一样的,除了一些个别细节的地方,如在text表达式中求字符串的长度用的是字符串变量的length属性,而在onRender事件中用的是变量的length()方法;在text表达式中给text赋值用的是this.value属性,而在onRender事件中用的是this.setDisplayValue()方法,还有很多其他地方的细小差别,大家可以自己比较。 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值