代码之家  ›  专栏  ›  技术社区  ›  paxdiablo

如何在birt中分组而不浪费行,并且仍然只在第一行打印组项目?

  •  5
  • paxdiablo  · 技术社区  · 15 年前

    在birt中分组时,我们经常希望分组值显示在第一行,如下所示:

    Group   User                       Reputation
    ------  ---------------            ----------
    Admins  Bill The Weasel                51,018
            Mark Grovel                   118,101
    Users   Pax_my_bags_got_to_go          73,554
            Jon Scoot                  **,***,*** <- overflow
            Clueless                       92,928
    

    实现这一点的通常方法是将组按如下方式布置在设计器中:

            +---------+--------+--------------+
    Tbl Hdr | Group   | User   |   Reputation |
            +---------+--------+--------------+
    Grp Hdr | [Group] |        |              |
            +---------+--------+--------------+
    Grp Dtl |         | [User] | [Reputation] |
            +---------+--------+--------------+
    Grp Ftr |         |        |              |
            +---------+--------+--------------+
    Tbl Ftr |         |        |              |
            +---------+--------+--------------+
    

    不幸的是,它把数据放在 确切地 这样,将分组值放在不同的行上:

    Group   User                       Reputation
    ------  ---------------            ----------
    Admins
            Bill The Weasel                51,018
            Mark Grovel                   118,101
    Users
            Pax_my_bags_got_to_go          73,554
            Jon Scoot                  **,***,*** <- overflow
            Clueless                       92,928
    

    对于只有一个用户的多个组的数据来说,这尤其痛苦,因为我们使用的空间是所需空间的两倍。如果我们移动 [Group] 数据项到 Grp Dtl 行,我们把小组里的每一行都打印出来。

    在birt中,我们如何合并这两条线? Grp Hdr 第一次 玻璃钢 ?

    3 回复  |  直到 7 年前
        1
  •  6
  •   bluish dmajkic    13 年前

    下面的答案是mystik最初的答案,但是,尽管我尽力了,我还是无法让它正常工作(尽管我没有尝试第二个建议,所以它可能会正常工作)。这可能是因为我运行的是birt的后台(而且,不,我不允许升级,不幸的是,这是一个独立产品的一部分,它有自己的发布周期)。

    我最终找到的解决方案是在分组行中保留数据值并选择单元格( 数据值),然后设置 Drop 控制之下 Properties , General 成为 Detail 而不是违约 None .

    这会在呈现报表时将数据值下移到细节行。

    我在编辑这个答案,而不是添加我自己的答案,因为我不想成为一个妓女:-)


    请尝试以下步骤:

    1. 像你一样创建组。
    2. 然后将组数据项向下拖动一行(请参见下文)。此时,如果愿意,可以删除组标题行。
    3. 然后单击包含组数据项的列。
    4. 选择后,转到控件的属性资源管理器,并滚动到底部,选择“高级”。
    5. 在“高级”列表中,您将看到一个名为“禁止重复”的属性。对于包含组数据的列,如果设置为true,则将全部设置。

                Supress
               Duplicates
              +---------+--------+--------------+
      Tbl Hdr | Group   | User   |   Reputation |
              +---------+--------+--------------+
      Grp Hdr |                                 |  <-delete this row AFTER Group Creation
              +---------+--------+--------------+
      Grp Dtl | [Group] | [User] | [Reputation] |
              +---------+--------+--------------+
      Grp Ftr |         |        |              |
              +---------+--------+--------------+
      Tbl Ftr |         |        |              |
              +---------+--------+--------------+
      
        2
  •  1
  •   yablokoff    14 年前

    前面的解决方案工作得很好,但是我们没有找到在组头中隐藏内部边框的明显方法。 所以这就是我们发现的解决方案:

    1. 将元素从细节行复制到标题行中的空单元格。
    2. 在事件oncreate时初始化循环变量

      i=0; // in onCreate property of group header row

    3. 更改“可见性”属性编辑器选项卡中的条件。根据条件选中“隐藏元素”

      i++ == 0

    所以最终的布局将如下所示:

       +---------+--------+--------------+
       | Tbl Hdr | Group  |    User      |
       +---------+--------+--------------+
       | [Group] | [User] | [Reputation] |
       +---------+--------+--------------+
       |         | [User] | [Reputation] | <-- that's the line that hide first element  
       +---------+--------+--------------+
       |         |        |              |
       +---------+--------+--------------+
    
        3
  •  0
  •   bluish dmajkic    11 年前

    选择要在其中输入或放置组数据的单元格,然后选择 全部删除 而不是 没有 在属性资源管理器中。

    或选择 删除>详细信息 对于另一组数据和数据字段单元格的单元格。

    推荐文章