2013-07-18 2 views
1

몇 가지 하위 보고서가 포함 된 RDLC 보고서가 있습니다. LocalReport_SubreportProcessing 이벤트로 모든 하위 보고서를 처리하고 있습니다. 이제이 하위 보고서 중 하나의 보고서에는 하위 보고서가 있습니다. 이 하위 보고서를 처리하는 방법에 대한 아이디어를 얻지 못하고 있습니까?rdlc에서 하위 보고서의 하위 보고서를 처리하는 방법은 무엇입니까?

주 보고서의 경우 이벤트를 추가했습니다. 하위 보고서의 하위 보고서를 처리하는 이벤트

void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e) 
{  
    if (e.ReportPath == "rpt_PSRUserHoursDetail") 
    { 
     //Code 
    } 
    else if (e.ReportPath == "rpt_BEnchMiscDetails") 
    { 

     System.Data.DataTable dtBenchMiscSubReport =DataTable 
     ReportDataSource subRptSource = new ReportDataSource("DataSource", dtBenchMiscSubReport); 
     e.DataSources.Add(subRptSource); 

     (sender as Microsoft.Reporting.WebForms.LocalReport).SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessingBench); 

     CommonHelper.DisposeOf(dtBenchMiscSubReport); 
    } 
} 

코드에 대한

viewer.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing); 
    viewer.LocalReport.Refresh(); 

코드는 다음과 같습니다 :

void LocalReport_SubreportProcessingBench(object sender, SubreportProcessingEventArgs e) 
{ 
    int intProjectID = 0; 
    int int_UserID = 0; 

    if (e.Parameters.Count > 0 && e.ReportPath=="SubMiscellaneousTaskReport") 
    { 
     //get parameter 

    } 

    DateTime dtCurrentMonth = clsCheckDBNull.ToDate(string.Format("{0}-{1}-{2}", drpYear.SelectedValue, drpMonth.SelectedValue, "01")); 
    if (e.ReportPath == "SubMiscellaneousTaskReport") 
    { 
     System.Data.DataTable dt = DataTable 
     ReportDataSource subRptSource = new ReportDataSource("Dataset1", dt); 
     e.DataSources.Add(subRptSource); 
    } 
} 

답변

0

@chirag Fanse : 하위 보고서 자체 보고서. 하위 보고서 (예 : B)의 하위 보고서 (예 : A)가 있으면 이제 B가 주 보고서가되고 A가 하위 보고서가됩니다. 따라서 하위 보고서를 확인할 수 있습니다.

if (e.ReportPath == "A") 

등 나머지 항목은 동일합니다.

0

나는 하위 보고서의 하위 보고서에 매개 변수를 전달하는 방법을 발견했다 : 여기

public partial class FormReportViewerAsnDetailed : Form 
{ 
    private readonly int PoID; 

    public FormReportViewerAsnDetailed(int PoID) 
    { 
     this.PoID = PoID; 
     InitializeComponent(); 
     reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", bindingSource1)); 
     reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet2", bindingSource2)); 
     reportViewer1.LocalReport.SubreportProcessing += LocalReport_SubreportProcessing; 
    } 

    private void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e) 
    { 
     if (e.Parameters.Any(k => k.Name == "AsnID")) //is it asn subreport? 
     { 
      var asn = int.Parse(e.Parameters["AsnID"].Values.First()); 

      asn_Details_ReportTableAdapter1.Fill(viewAsnDetailsDataSet1.Asn_Details_Report, asn); 
      e.DataSources.Add(new ReportDataSource("DataSet2", 
       new BindingSource(viewAsnDetailsDataSet1, "Asn_Details_Report"))); 

      inbound_By_AsnTableAdapter1.Fill(inboundsReportDataSet1.Inbound_By_Asn, asn); 
      e.DataSources.Add(new ReportDataSource("DataSet1", 
       new BindingSource(inboundsReportDataSet1, "Inbound_By_Asn"))); 
     } 
     else // subreport of subreport 
     { 
      inbound_Items_ReportTableAdapter1.Fill(inboundItemsReportDataSet1.Inbound_Items_Report, 
       int.Parse(e.Parameters["InboundID"].Values.First())); 
      BindingSource src = new BindingSource(inboundItemsReportDataSet1, "Inbound_Items_Report"); 
      e.DataSources.Add(new ReportDataSource("DataSet1", src)); 
     } 
    } 

    private void FormReportViewer_Load(object sender, EventArgs e) 
    { 
     this.purchase_Order_Details_ReportTableAdapter1.Fill(
      purchaseOrderDetialsReport1.Purchase_Order_Details_Report, PoID); 
     asn_Select_By_POTableAdapter1.Fill(asnDetailedList1.Asn_Select_By_PO, PoID); 
     reportViewer1.LocalReport.SetParameters(new ReportParameter("po", PoID.ToString())); 
     this.reportViewer1.RefreshReport(); 
    } 
} 

, 나는 마스터 보고서에 대한 두 개의 데이터 집합을 가지고있다. 그것들은 생성자 메서드에서 전달되고, 마스터 보고서 매개 변수와 함께 load 메서드로 채워집니다.

하위 보고서 처리에서 하위 보고서 호출 대상을 찾아야합니다 (하위 보고서 또는 하위 보고서 하위 포함)? 그런 다음 각각에 데이터 소스를 전달해야합니다.

관련 문제