Visual Studio ReportViewer在每个页面上重复数据块

时间:2009-09-02 09:06:45

标签: visual-studio reportviewer

我正在使用Reportviewer生成要由用户打印的销售发票。如何在多页发票的每一页上打印数据绑定字段?

发票印在预先印好的表格上。我希望打印的表格看起来大致如下:

第1页 顾客约翰史密斯 123 main st。
city,CA 90000

一些item1 $ 100
一些item2 $ 150
一些item3 $ 150


第2页 顾客约翰史密斯 123 main st。
city,CA 90000

一些item4 $ 500
一些item5 $ 250
一些item6 $ 950
总计2100美元

使用1个列表,其中包含客户信息的数据绑定文本框字段和项目表。问题是如果有很多项目使项目流向第2页,下一页只包含项目,而不是需要在第二页上打印的客户信息。

我尝试使用页眉,但我不能在页眉中使用数据绑定项。请帮助!

3 个答案:

答案 0 :(得分:3)

在XML视图中打开RDLC文档。找到TablixColumnHierarchy树下面的代码块,并相应地进行修改。关键是在TablixMember标记之间设置RepeatOnNewPage tag = true。

希望这可以防止数小时与其他人争斗!

请参阅以下代码段:

    ... 
    <TablixColumnHierarchy>
      <TablixMembers>
        <TablixMember />
        <TablixMember />
        <TablixMember />
        <TablixMember />
        <TablixMember />
        <TablixMember />
        <TablixMember />
        <TablixMember />
        <TablixMember />
        <TablixMember />
      </TablixMembers>
    </TablixColumnHierarchy>
    <TablixRowHierarchy>
      <TablixMembers>
        <TablixMember>
          <KeepWithGroup>After</KeepWithGroup>
          <RepeatOnNewPage>true</RepeatOnNewPage>
        </TablixMember>
        <TablixMember>
          <KeepWithGroup>After</KeepWithGroup>
          <RepeatOnNewPage>true</RepeatOnNewPage>
        </TablixMember>
        <TablixMember>
          <Group Name="Details" />
          <RepeatOnNewPage>true</RepeatOnNewPage>
        </TablixMember>
      </TablixMembers>
    </TablixRowHierarchy>
    <RepeatColumnHeaders>true</RepeatColumnHeaders>
    <RepeatRowHeaders>true</RepeatRowHeaders>
    <FixedColumnHeaders>true</FixedColumnHeaders>
    <FixedRowHeaders>true</FixedRowHeaders>
    <KeepTogether>true</KeepTogether>
    <DataSetName>ds_Triangulation</DataSetName>
    ...

答案 1 :(得分:0)

我假设您在报表正文中使用表只是按项添加分组,并在组头中放置客户信息,然后将RepeatOnNewPage设置为treu以用于报表标题行 最好的祝福, 约尔丹

答案 2 :(得分:0)

一个非常有价值的资源是GotReportViewer网站,他们有一个名为Invoice Maker的样本值得一看。

您可以使用的技巧在this MSDN page中描述,它涉及将您在页眉中所需的字段添加到报表正文中,然后隐藏字段,然后在页眉中引用隐藏文本领域,例如=第一(ReportItems!txtHiddenFieldName.Value)