C# ReportViewer列组分页符

C# ReportViewer列组分页符,c#,asp.net,reporting-services,reportviewer,C#,Asp.net,Reporting Services,Reportviewer,我需要使用ASP.NET ReportViewer生成每日员工出勤报告。它必须按月分组,这意味着我必须根据monthName字段设置分页符 我在RDLC报告中提出了以下设计: 结果是: 起初,一切都很好。第一页显示1月份的出席人数,从1月1日到31日。单击报告上的“下一页”按钮可显示下个月(即2月)的员工出勤记录 但是雇员可能相当多,因此最好将其呈现为行而不是列。没问题。我可以重新设计报告,然后再次将分页符设置为[monthName],例如: 令我惊讶的是,它不起作用。我在MSDN中发现,

我需要使用ASP.NET ReportViewer生成每日员工出勤报告。它必须按月分组,这意味着我必须根据
monthName
字段设置分页符

我在RDLC报告中提出了以下设计:

结果是:

起初,一切都很好。第一页显示1月份的出席人数,从1月1日到31日。单击报告上的“下一页”按钮可显示下个月(即2月)的员工出勤记录

但是雇员可能相当多,因此最好将其呈现为行而不是列。没问题。我可以重新设计报告,然后再次将分页符设置为
[monthName]
,例如:

令我惊讶的是,它不起作用。我在MSDN中发现,在列组中不允许分页符

我的问题是:

  • 设置列组分页符有什么问题?为什么 他们设定了这个限制

  • 实现这一点的变通方法是什么?我相信你们有 也试图完成同样的任务并取得成功

  • 恐怕我不知道他们为什么这样做。还有很多不必要的限制,就像这个一样。这是我能想到的人们在SSR上使用Crystal Reports的唯一原因
  • 然而,总有一个解决办法。并非总是简单的,但有了意愿,通常就会有办法。
    我将尽力在下面解释一种可能的解决方法:

  • 解决方法

  • 首先,将一个新的
    Tablix
    添加到只有一列和一行的报告中。将此表绑定到数据集
  • monthName
    上添加行组,并将tablix的大小重新调整为与报表正文相同的大小
  • 在tablix的单元格中放置一个
    矩形
    。并将矩形的
    PageBreak
    属性
    BreakLocation
    设置为End
  • 将原始表放置在矩形中。然后调整矩形的高度,使其完全适合桌子周围
  • 以下是文件大纲的一个示例:

    这使您的表组被包装在一个矩形中。此矩形在
    monthName
    上分组,并且在末尾有一个分页符,这将导致报告者每页打印一个组


    如果您有任何问题,请留下评论。

    谢谢,但我注意到一个月内出现null
    logCnt
    的员工不会出现在页面中。我需要向所有有或没有日志的员工展示。以前,它在不使用此解决方案的情况下工作。为了产生我想要的结果,我需要配置什么?如果以前的分组有效,只需尝试在外部表中使用相同的分组。矩形负责添加打断,因此不应该出现以前的问题。另一个解决方案是改变获取数据的SQL查询。使用
    LEFT-OUTER-JOIN
    并在必要的列中捕获空值,如下所示:
    ISNULL(logCnt,0)
    。这将确保组中有记录,即使它们是空的。希望您也能回答我以后关于ReportViewer的问题:)