BIRT:根据本地报表参数筛选级联报表参数组
创始人
2024-12-19 05:30:12
0

以下是一个示例代码,展示了如何使用BIRT根据本地报表参数筛选级联报表参数组:

  1. 首先,创建一个数据集,用于获取级联报表参数组的数据。假设数据集名称为"paramGroupDataSet",该数据集返回两个字段:参数组ID(paramGroupId)和参数组名称(paramGroupName)。

  2. 在报表设计中添加两个报表参数:一个用于筛选级联报表参数组的本地参数(paramFilter),另一个用于接收选定的参数组ID(paramGroupId)。

  3. 创建一个数据集,用于根据筛选的参数组ID获取相应的参数组。假设数据集名称为"paramDataSet",该数据集需要一个参数:paramGroupId。

    数据集查询SQL示例: SELECT paramId, paramName FROM parameters WHERE paramGroupId = ?

  4. 在报表设计中添加一个表格控件,用于展示根据筛选参数组获取的参数列表。

    表格控件的数据集绑定到"paramDataSet"数据集。

  5. 在报表设计中添加一个脚本事件,用于在加载报表时动态填充级联报表参数组的下拉列表。

    脚本事件示例代码:

    importPackage(Packages.org.eclipse.birt.report.model.api);
    importPackage(Packages.java.util);
    
    function beforeOpen() {
       var dataSet = reportContext.getReportRunnable().getDesignHandle().findDataSet("paramGroupDataSet");
       var resultSet = dataSet.getResultIterator();
    
       var paramFilter = reportContext.getParameterValue("paramFilter");
       var paramFilterValue = (paramFilter == null) ? "" : paramFilter.toString();
    
       var paramGroupId = reportContext.getParameterValue("paramGroupId");
    
       var options = new ArrayList();
       while (resultSet.next()) {
          var paramGroupId = resultSet.getString("paramGroupId");
          var paramGroupName = resultSet.getString("paramGroupName");
    
          if (paramGroupId == paramFilterValue) {
             options.add(new SelectOption(paramGroupId, paramGroupName, true));
          } else {
             options.add(new SelectOption(paramGroupId, paramGroupName));
          }
       }
    
       reportContext.getReportRunnable().getReportParameterHandle().setParameterOptions("paramGroupId", options);
    }
    

    注意:在脚本事件中,需要根据实际情况修改数据集名称、字段名称和表格控件的绑定。

  6. 在报表设计中,将脚本事件绑定到报表的"beforeFactory"事件。

    报表的"beforeFactory"事件绑定示例代码:

    
       ...
       
       ...
    
    

    注意:在报表设计中,需要将"script.event.MyScriptEvent"替换为脚本事件的完整类路径。

通过以上步骤,您可以根据本地报表参数筛选级联报表参数组,并在报表加载时动态填充级联报表参数组的下拉列表。

相关内容

热门资讯

十分钟辅助挂!钱塘十三水有没有... 十分钟辅助挂!钱塘十三水有没有套路(辅助挂)详细辅助挂教程(2024已更新)(抖音)1、用户打开应用...
八分钟辅助挂!佳友互娱有挂吗(... 八分钟辅助挂!佳友互娱有挂吗(透视)详细辅助app教程(2023已更新)(知乎);该软件可以轻松地帮...
十分钟辅助挂!哈狗十三道怎么玩... 十分钟辅助挂!哈狗十三道怎么玩胜率大(透视)详细辅助神器教程(2025已更新)(今日头条)1、上手简...
4分钟辅助挂!兴动互娱辅助器怎... 4分钟辅助挂!兴动互娱辅助器怎么收费(辅助挂)详细辅助软件教程(2021已更新)(哔哩哔哩)兴动互娱...
十分钟辅助挂!胡乐麻将胡牌神器... 十分钟辅助挂!胡乐麻将胡牌神器(透视)详细辅助挂教程(2025已更新)(抖音)胡乐麻将胡牌神器软件透...
8分钟辅助挂!闲来麻将输赢靠系... 8分钟辅助挂!闲来麻将输赢靠系统吗(透视)详细辅助APP教程(2025已更新)(抖音);闲来麻将输赢...
7分钟辅助挂!拱趴大菠萝免费辅... 7分钟辅助挂!拱趴大菠萝免费辅助器(辅助挂)详细辅助脚本教程(2021已更新)(小红书)1、玩家可以...
1分钟辅助挂!哈灵麻将辅牌器购... 1分钟辅助挂!哈灵麻将辅牌器购买(辅助挂)详细辅助软件教程(2021已更新)(今日头条)1.哈灵麻将...
五分钟辅助挂!网易棋牌麻将有挂... 五分钟辅助挂!网易棋牌麻将有挂吗(辅助挂)详细辅助器教程(2020已更新)(今日头条)暗藏猫腻,小编...
两分钟辅助挂!微信小程序三打哈... 两分钟辅助挂!微信小程序三打哈辅助器(透视)详细辅助攻略教程(2024已更新)(今日头条)在进入微信...