【问题标题】:Composite fields in BirtBirt 中的复合字段
【发布时间】:2011-11-08 15:40:49
【问题描述】:

我是 Birt 的初学者(实际上这是我使用它的第一天),我的任务是创建一个看起来与在 Flash/Flex 中完成的完全一样的 Birt 报告......这个报告看起来非常好。

问题是:我的 Flex 解决方案我有一个 DataGrid 字段,该字段由一个标签和一个数字输出组成,如果数值为 0 或更大。

基于记录集行的两个值,我通过应用 Birt 的映射功能得到一个国际化值(这已经很好用了)。如果 value 大于或等于 0,则结​​果字符串应附加“({value})”。

使用设计器时,我只能在它自己的表格单元格或表格行中放置第二个字段,但我似乎无法在一个表格单元格中输出这两个字段。

如果有人能指导我完成这件事,那就太好了。

克里斯

【问题讨论】:

    标签: reporting birt


    【解决方案1】:

    您可以在 Dynamic Text JavaScript 表达式中构建整个字符串。

    在 Javascript 中使用 i18n 在BIRT FAQ 中有简要描述。一个有趣的问题可能是How can I localize strings in JavaScript - 这个表达式给出了本地化文本:

    reportContext.getMessage("companyNameKey", reportContext.getLocale())
    

    行数据存储在row 数组中。您可以在表达式生成器中找到所有可用字段。当您找到并双击所需字段时,它会出现如下表达式:

    row["FOO_NUMBER"].value
    

    综合起来:

    reportContext.getMessage("Foo number:", reportContext.getLocale()) + 
      (row["FOO_NUMBER"].value > 0) ? ( "("+row["FOO_NUMBER"].value+")" ) : ("")
    

    【讨论】:

    • 嗨...谢谢。它成功了:-) ...由于我的“FOO_NUMBER”是浮点类型,因此添加该值会导致“未定义”被输出。离开它会使 dynamicText 按预期工作。剩下的唯一要解决的事情就是输出关于报告区域设置的浮点数(目前浮点数以“1.4”格式输出,这在美国是正确的,但在德国它必须是“1,4” )
    【解决方案2】:

    感谢 jinowolskis 的帖子...只是想添加完整的解决方案,以防有人遇到同样的问题 :-)

    importPackage( Packages.java.text );
    var myKey = "" + row["vulnerabilityClass"] + "." + row["result"];
    if(row["cvssScore"] >= 0) {
        var nf = NumberFormat.getNumberInstance(reportContext.getLocale());
        nf.setMinimumFractionDigits(1);
        nf.setMaximumFractionDigits(1);
        reportContext.getMessage(myKey, reportContext.getLocale()) + " (" + nf.format(row["cvssScore"]) + ")";
    } else {
        reportContext.getMessage(myKey, reportContext.getLocale());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多