2011-01-20 40 views
6

Tôi đang cố gắng đại diện cho mối quan hệ cha-con-cháu trong báo cáo RDLC Reporting Services Services RDLC. Báo cáo được kết xuất thành một điều khiển reportviewer được lưu trữ trong một ứng dụng WPF. Tôi đang sử dụng một bộ dữ liệu CLR dựa trên IEnumberable <> và ràng buộc các nguồn dữ liệu reportviewer vào bộ dữ liệu của tôi trong một máy ảo.Lỗi trang trong RDLC Subreports không xuất hiện

Tôi muốn mỗi thực thể con hiển thị trên một trang mới (và các trang span nếu chúng đủ lớn trong tập dữ liệu).

Tôi hiện đang có một báo cáo chính cho thực thể cha mẹ, một subreport cho đứa trẻ và một subreport cho grand-children.

Mỗi báo cáo đang sử dụng Tablix để bố trí các trường của lớp CLR tương ứng trên trang. Tôi đã gán một Nhóm trong Tablix của subreport con và đặt PageBreaks thành StartAndEnd (nghĩa là tất cả 3 hộp kiểm được chọn trong hộp thoại Thuộc tính Nhóm).

Tôi đã tắt liên tục ở mọi nơi tôi có thể tìm thấy.

Thật không may, ngắt trang bị bỏ qua khi tôi xem báo cáo ở chế độ Bố cục in hoặc xuất sang PDF và các mục con trong mục con tất cả lưu lượng cùng nhau mà không có ngắt trang tách chúng.

Tôi đã thấy một số vấn đề về SO và MSDN nói về các ngắt trang không mong muốn, nhưng tôi không tìm thấy bất kỳ cuộc thảo luận nào về việc ngắt trang bị thiếu.

Có ai biết cách buộc ngắt trang xuất hiện trong báo cáo phụ không? Nếu không, có cách nào tốt hơn/thay thế để thể hiện dữ liệu cha/con như thế này mà không sử dụng báo cáo phụ?

Cảm ơn bạn đã có bất kỳ thông tin chi tiết nào bạn có thể cung cấp.

FWIW, sau đây là một vài trích đoạn của RDLC mà có thể relavent:

Báo cáo phụ huynh:

 <TablixRow> 
      <Height>0.25in</Height> 
      <TablixCells> 
      <TablixCell> 
       <CellContents> 
       <Rectangle Name="Rectangle1"> 
        <ReportItems> 
        <Subreport Name="InvoicePageDetail"> 
         <ReportName>InvoicePageDetail</ReportName> 
         <Parameters> 
         <Parameter Name="InvoiceID"> 
          <Value>=Fields!InvoiceID.Value</Value> 
         </Parameter> 
         <Parameter Name="CustID"> 
          <Value>=Fields!CustID.Value</Value> 
         </Parameter> 
         </Parameters> 
         <Height>0.25in</Height> 
         <Width>6.4in</Width> 
         <Style> 
         <Border> 
          <Style>None</Style> 
         </Border> 
         </Style> 
        </Subreport> 
        </ReportItems> 
        <PageBreak> 
        <BreakLocation>End</BreakLocation> 
        </PageBreak> 
       </Rectangle> 
       <ColSpan>3</ColSpan> 
       </CellContents> 
      </TablixCell> 
      <TablixCell /> 
      <TablixCell /> 
      </TablixCells> 
     </TablixRow> 

Sub Report:

<?xml version="1.0" encoding="utf-8"?> 
<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"> 
    <DataSources> 
    <DataSource Name="ISCBillingDataModel"> 
     <ConnectionProperties> 
     <DataProvider>System.Data.DataSet</DataProvider> 
     <ConnectString>/* Local Connection */</ConnectString> 
     </ConnectionProperties> 
     <rd:DataSourceID>50ce54a7-32e3-46df-bd7c-97f194ba4390</rd:DataSourceID> 
    </DataSource> 
    </DataSources> 
    <DataSets> snip... 
    </DataSets> 
    <Body> 
    <ReportItems> 
     <Tablix Name="Tablix1"> 
     <TablixBody> 
      <TablixColumns> snip... 
      </TablixColumns> 
      <TablixRows> 
      <TablixRow> 
       <Height>0.25in</Height> 
       <TablixCells> 
       <TablixCell> 
        <CellContents> 
        <Subreport Name="InvoiceFixedFeeDetail"> 
         <ReportName>InvoiceFixedFeeDetail</ReportName> 
         <Parameters> 
         <Parameter Name="InvoicePageID"> 
          <Value>=Fields!InvoicePageID.Value</Value> 
         </Parameter> 
         </Parameters> 
         <Style> 
         <Border> 
          <Style>None</Style> 
         </Border> 
         </Style> 
        </Subreport> 
        <ColSpan>3</ColSpan> 
        </CellContents> 
       </TablixCell> 
       <TablixCell /> 
       <TablixCell /> 
       </TablixCells> 
      </TablixRow> 
      </TablixRows> 
     </TablixBody> 
     <TablixColumnHierarchy> 
      <TablixMembers> 
      <TablixMember /> 
      <TablixMember /> 
      <TablixMember /> 
      </TablixMembers> 
     </TablixColumnHierarchy> 
     <TablixRowHierarchy> 
      <TablixMembers> 
      <TablixMember> 
       <Group Name="Group1"> 
       <GroupExpressions> 
        <GroupExpression>=Fields!InvoicePageID.Value</GroupExpression> 
       </GroupExpressions> 
       <PageBreak> 
        <BreakLocation>StartAndEnd</BreakLocation> 
       </PageBreak> 
       </Group> 
       <SortExpressions> 
       <SortExpression> 
        <Value>=Fields!InvoicePageID.Value</Value> 
       </SortExpression> 
       </SortExpressions> 
       <TablixHeader> 
       <Size>0.03125in</Size> 
       <CellContents> 
        <Textbox Name="Textbox11"> 
        <CanGrow>true</CanGrow> 
        <CanShrink>true</CanShrink> 
        <KeepTogether>true</KeepTogether> 
        <Paragraphs> 
         <Paragraph> 
         <TextRuns> 
          <TextRun> 
          <Value /> 
          <Style /> 
          </TextRun> 
         </TextRuns> 
         <Style /> 
         </Paragraph> 
        </Paragraphs> 
        <rd:DefaultName>Textbox11</rd:DefaultName> 
        <Style> 
         <Border> 
         <Color>LightGrey</Color> 
         <Style>None</Style> 
         </Border> 
        </Style> 
        </Textbox> 
       </CellContents> 
       </TablixHeader> 
       <TablixMembers> 
       <TablixMember> 
        <Group Name="Details"> 
        <PageBreak> 
         <BreakLocation>StartAndEnd</BreakLocation> 
        </PageBreak> 
        </Group> 
        <TablixMembers> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        </TablixMembers> 
       </TablixMember> 
       </TablixMembers> 
      </TablixMember> 
      </TablixMembers> 
     </TablixRowHierarchy> 
     <DataSetName>pages</DataSetName> 
     <PageBreak> 
      <BreakLocation>Start</BreakLocation> 
     </PageBreak> 
     <Height>3.45in</Height> 
     <Width>6.38125in</Width> 
     <Style> 
      <Border> 
      <Style>None</Style> 
      </Border> 
     </Style> 
     </Tablix> 
    </ReportItems> 
    <Height>3.6in</Height> 
    <Style> 
     <Border> 
     <Color>Green</Color> 
     <Style>None</Style> 
     </Border> 
    </Style> 
    </Body> 
    <ReportParameters> 
    <ReportParameter Name="InvoiceID"> 
     <DataType>Integer</DataType> 
     <Prompt>ReportParameter1</Prompt> 
    </ReportParameter> 
    <ReportParameter Name="CustID"> 
     <DataType>String</DataType> 
     <Prompt>ReportParameter1</Prompt> 
    </ReportParameter> 
    </ReportParameters> 
    <Width>6.43125in</Width> 
    <Page> 
    <LeftMargin>1in</LeftMargin> 
    <RightMargin>1in</RightMargin> 
    <TopMargin>1in</TopMargin> 
    <BottomMargin>1in</BottomMargin> 
    <Style /> 
    </Page> 
    <rd:ReportID>a360303c-713c-4baf-b9ce-32ae0997c855</rd:ReportID> 
    <rd:ReportUnitType>Inch</rd:ReportUnitType> 
</Report> 
+0

Cảm ơn bạn đã chơi bounty jball. Bạn có gặp phải vấn đề tương tự không? Cho đến nay, câu trả lời duy nhất tôi có thể đưa ra là hoàn toàn bình thường hóa tập dữ liệu. Tôi vẫn hy vọng ai đó có thể đề xuất một câu trả lời tốt hơn. –

+0

Tôi đã chạy vào một vấn đề tương tự, và tôi đã kết thúc với cùng một loại workaround bạn sử dụng. Đây là hy vọng ai đó có ý tưởng tốt hơn. – jball

Trả lời

0

Tôi có một một phần câu trả lời, nhưng nó có vẻ giống như một IMO hack. Tôi sẽ để câu hỏi này mở ra một lúc để xem ai đó có thể đề xuất câu trả lời hay hơn không ...

Để buộc ngắt trang xuất hiện ở nơi tôi muốn, tôi loại bỏ các báo cáo lồng nhau bằng cách không chuẩn hóa CLR tập dữ liệu đang thúc đẩy báo cáo chính. Sau đó, tôi đã sử dụng các nhóm hàng trên báo cáo chính để thực hiện bố cục trang và đặt hộp kiểm cho "Giữa mỗi trường hợp" và "Đồng thời ở đầu" trên tab Trang Breaks của hộp thoại Thuộc tính Nhóm tương đương với cài đặt sau trong RDLC xml :

  <PageBreak> 
       <BreakLocation>Start</BreakLocation> 
      </PageBreak> 

tôi vẫn tiếp tục thực thể grand-con (đường hóa đơn) bình thường hóa ra vào dữ liệu riêng của họ và tiểu báo cáo vì cách bố trí cột của các dòng khác với ở tiêu đề hóa đơn hoặc trang hóa đơn mức đáng kể.


Trong khi điều này mang lại bố cục mong muốn, tôi không hoàn toàn hài lòng với câu trả lời này vì tôi không thích làm mất tập dữ liệu.Tôi muốn kiểm tra cách DataElementName hoạt động và liệu nó có thể mang lại một giải pháp tốt hơn hay không.

Câu trả lời thay thế được chào mừng

+1

FWIW, DataElementName không liên quan đến vấn đề này. Theo tài liệu, DataElementName được sử dụng khi xuất sang XML để xác định tên thẻ được sử dụng để đánh dấu dữ liệu. Vẫn hy vọng ai đó có thể cho tôi một câu trả lời tốt hơn. –

Các vấn đề liên quan