表格:在每页上重复标题行无效 - 报表生成器3.0

188

我有一个包含许多跨越多个页面的行的表格。我已经设置了 Tablix 属性,在每一页上重复标题行,但这并不起作用。我在某个地方读到说,这是 Report Builder 3.0 中已知的 bug。这是真的吗?如果不是,还需要做些什么吗?

6个回答

487
这取决于您使用的表格结构。例如,在一个表格中,您没有列组,因此Reporting Services无法识别哪些文本框是列标题,并将RepeatColumnHeaders属性设置为True也无效。
相反,您需要:
  1. 在分组窗格中打开高级模式。(单击列组右侧的箭头,然后选择高级模式。)
    • Screenshot
  2. 在行组区域(不是列组),单击静态组,突出显示选定的表格中的相应文本框。单击每个静态组,直到突出显示最左边的列标题。这通常是第一个列出的静态组。
  3. 在属性窗口中,将RepeatOnNewPage属性设置为True。
    • Screenshot
  4. 确保将KeepWithGroup属性设置为After
KeepWithGroup属性指定静态成员需要粘附到哪个组。如果设置为After,则静态成员会粘附在其后面的组上方,充当组标题。如果设置为Before,则静态成员会粘附在其前面的组下方,充当组页脚。如果设置为None,则Reporting Services决定将静态成员放在何处。
现在,当您查看报表时,列标题将在表格的每个页面上重复显示。 这段视频展示了如何按照答案所描述的方式进行设置。

5
Stacia,当我选择了“保持与分组在一起”并尝试保存时,出现了“Tablix 'DetailTablix' 有一个无效的 TablixMember。在 TablixColumnHierarchy 中的所有 TablixMember 元素都必须将 RepeatOnNewPage 属性设置为 false。”的错误提示。你有什么想法吗? - moodboom
28
我解决了我的问题。Stacia你的答案是完全正确的,只是需要掌握技巧才能做到完美。请注意,当设置RepeatOnNewPage属性时,Stacia建议更改“行组”区域。此解决方案中的其他所有内容都与列有关,但您需要选择行组(在左侧),而不是列组(在右侧),即使您最开始是通过单击列中的下拉菜单开始的。谢谢你,Stacia,真是太棒了。 - moodboom
6
+1 - 我刚刚在互联网上阅读了大约十几篇关于此问题的指南,这是最好的、最直接的解决方法——你还解释了选项的重要性,非常棒。谢谢! - JNK
4
这个视频展示了如何按照答案所描述的方式进行设置:http://www.youtube.com/watch?v=WAO819-gkKw - shrimp rice
8
“KeepWithGroup=After”对我来说非常关键。就像太多微软的东西一样,这是一个不明显的技巧,需要让功能正常工作。谢谢! - leqid
显示剩余5条评论

22

我使用2.0版本,并且发现以上方法很有帮助;然而,由于某些原因,选定静态单元格并没有高亮显示。

  1. 在列分组下选择“高级选项”,静态单元格将会出现
  2. 点击行分组中出现的静态单元格
  3. 将“KeepWithGroup”设置为“After”,“RepeatOnNewPage”设置为“true”

现在你的列标题应该在每个页面上都重复出现。


这个完美地运行了...比上面的答案简单多了,而那个对我没用。 - R_Avery_17
不幸的是,这让我开始再次遇到空白页面。 - Mike

13
我是这样解决这个问题的:我手动更改了后台代码(从菜单"View/code")。下面的部分应该有与tablix中的行数相同数量的<TablixMember> </TablixMember>。在我的情况下,我有比tablix中行数更多的<TablixMember> </TablixMember>对。此外,如果你进入"高级模式"(在"列组"右边),“行组”后面的静态线条数应该等于tablix中的行数。使它们相等的方法是更改代码。
<TablixRowHierarchy>
      <TablixMembers>
        <TablixMember>
          <KeepWithGroup>After</KeepWithGroup>
          <RepeatOnNewPage>true</RepeatOnNewPage>
        </TablixMember>
        <TablixMember>
          <Group Name="Detail" />
        </TablixMember>
      </TablixMembers>
    </TablixRowHierarchy>

令我惊讶的是,这样做解决了问题。我有一个带有6行(3个标题行加上一个带有标题、详细信息和页脚行的分组)的tablix。查看源代码显示有6个<TablixRow>,但在<TablixRowHierarchy>中有7个<TablixMember>。我猜测多余的是哪一个(包裹组的那个),然后将其删除。这个版本无法呈现,但错误消息指出需要更改一行的<Repeat...>和<KeepWith...>设置以匹配前面的设置;我在第三个(静态)行中将它们更改为“true”和“After”,然后就完成了!我真希望我能够真正理解这个过程 ;)! - GISmatters
谢谢。我已经使用SSRS超过10年了,刚刚遇到了这个问题 - 的确,在组周围有一个额外的TablixMember包装器(毫无疑问是由于添加和删除组的实验)。清理成员列表解决了神秘的非重复标题问题。 - Carl Daniel
谢谢。我不得不删除两个多余的TablixMember行,它们被分组并且没有数据。在我的报告中,这对我来说是一个信号,即有两个静态行组而不是一个。一旦我删除了多余的XML嵌套,重复的行就开始工作了。 - Noppadet
1
谢谢。只有这个解决方案适用于我遇到类似问题的报告。 - Syed
显然,在Visual Studio中缺少正确的设置。因此,涉及ReportBuilder的“高级设置”提示没有帮助。手动编辑文件非常成功。谢谢! - MovGP0
我有一个额外的<TablixMember>,但也有一个不正确的<TablixMembers>分组。一旦我删除了多余的成员并纠正了分组,它就可以工作了!我正在使用MS Report Builder,并且一直在尝试一些格式,添加和删除Tablixes,这可能是问题的根源。幸运的是,RDL文件是纯文本,所以我可以编辑它。 - BeardedOne85

11

在分组面板中打开高级模式。(单击“列组”右侧的箭头,然后选择“高级模式”)。

在行组区域(而非列组)中,单击一个静态组,这将突出显示表格中相应的文本框。

逐个单击每个静态组,直到它突出显示最左边的列标题。这通常是列出的第一个静态组。

在属性网格中:

  • KeepWithGroup设置为After
  • 对于重复标题,将RepeatOnNewPage设置为True
  • FixedData设置为True以保持标题可见

5
如果您仍然遇到此问题,另一种解决方法是执行以下操作:
  • 清除所有表头文本,将其留空。
  • 在报告“标题”部分中添加文本框,每个文本框代表表格的列标题。
  • 由于此矩形位于报告标题部分,因此它会显示在所有报告页面上。
谢谢, Sufian。

2
我成功解决问题的方法是从头开始创建一个新报告。
创建好新报告并使其正常工作后,我会在Visual Studio中比较这两个.rdl文件。这些文件以XML格式存储,我希望通过快速使用WindDiff等工具来查看问题所在。
初步检查显示,这两个文件之间有700行或更多的代码差异,其中较大的文件是有故障的文件。对TablixHeader标签进行粗略查看没有发现任何明显的问题。
但在我的情况下,是因为.rdl文件损坏了。这原本是从一个工作报告复制而来,因此在删除未重用的内容时可能已经损坏了它。但是,在其他使用同样过程的报告中,当在属性中设置正确的设置时,标题可以重复出现。
希望这能有所帮助。如果你有一个复杂的报告,这并不是一个快速解决方法,但它有效。
也许在你那里将已知的良好XML文件与有故障的文件进行比较,会成为一个很好的论坛帖子。我会在我的端上尝试这样做。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接