2015-09-04 19 views
1

我有一个报告,显示测试的集合。测试报告实际上是另一个在收集报告中显示为子报告的xtrareport。在这些测试报告中可以有多个子测试和。对于每个子测试,都有一个在脚本中创建的图表。 这是脚本来创建的子测试图:显示xtrareport报告与子报告与差异脚本和图表detailreports腐败图表

private void xrChart1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) 
{ 
    XRChart chrt = (XRChart)sender; 
    XYDiagram axis = (XYDiagram)chrt.Diagram; 
    if (chrt.Series.Count > 0) 
    { 
     while (chrt.Series[0].View is ScatterLineSeriesView) 
     { 
      chrt.Series.RemoveAt(0); 
     } 
    } 
    Series standardSeries = chrt.Series[0]; 
    Series allBottleSeries = chrt.Series[1]; 
     var curColVal = this.DetailReport1.GetCurrentColumnValue("ShowCurve"); 
     if (curColVal == null) 
    { 
     return; 
    } 
    chrt.BeginInit(); 
    chrt.Visible = (bool)curColVal; 
    if (chrt.Visible) 
    { 
     List<TSegment> segments = (List<TSegment>)this.DetailReport1.GetCurrentColumnValue("Segments"); 
     if (segments != null) 
     { 
      foreach (TSegment segment in segments) 
      { 
       Series tempSeries = new Series(); 
       ScatterLineSeriesView tempscatterLineSeriesView = new ScatterLineSeriesView(); 
       tempscatterLineSeriesView.LineMarkerOptions.BorderVisible = false; 
       tempscatterLineSeriesView.MarkerVisibility = DefaultBoolean.False; 
       tempscatterLineSeriesView.LineStyle.Thickness = segment.Thickness; 
       tempscatterLineSeriesView.Color = segment.SegmentColor; 
       tempSeries.LabelsVisibility = DefaultBoolean.False; 
       tempSeries.View = tempscatterLineSeriesView; 
       tempSeries.ShowInLegend = false; 
       tempSeries.ArgumentDataMember = "X"; 
       tempSeries.ArgumentScaleType = ScaleType.Numerical; 
       tempSeries.ValueDataMembersSerializable = "Y"; 
       tempSeries.DataSource = segment.Points; 
       chrt.Series.Insert(0, tempSeries); 
      } 
     } 
     standardSeries.ValueDataMembers[0] = "ODValue"; 
     standardSeries.ArgumentDataMember = "ConcentrationValue"; 
     standardSeries.DataSource = this.DetailReport1.GetCurrentColumnValue("Standards"); 
     allBottleSeries.ValueDataMembers[0] = "Y"; 
     allBottleSeries.ArgumentDataMember = "X"; 
     allBottleSeries.DataSource = this.DetailReport1.GetCurrentColumnValue("BottlePoints"); 
     axis.AxisX.Logarithmic = (bool)this.DetailReport1.GetCurrentColumnValue("XPlotIsLog"); 
     axis.AxisX.LogarithmicBase = (double)this.DetailReport1.GetCurrentColumnValue("LogarithmicBase"); 
     axis.AxisX.Title.Text = (string)this.DetailReport1.GetCurrentColumnValue("UnitsOfConcentration"); 
     axis.AxisX.Label.NumericOptions.Format = NumericFormat.Number; 
     axis.AxisX.Label.NumericOptions.Precision = (int)this.DetailReport1.GetCurrentColumnValue("NumberOfDigitsInResults"); 
     axis.AxisY.Label.NumericOptions.Format = NumericFormat.Number; 
     axis.AxisY.Label.NumericOptions.Precision = (int)this.DetailReport1.GetCurrentColumnValue("NumberOfDigitsInMeasuredValues"); 
     axis.AxisY.Logarithmic = (bool)this.DetailReport1.GetCurrentColumnValue("YPlotIsLog"); 
     axis.AxisY.LogarithmicBase = axis.AxisX.LogarithmicBase; 
      axis.AxisY.Title.Text = (string)this.DetailReport1.GetCurrentColumnValue("UnitsOfStandardsInput"); 
     axis.AxisY.WholeRange.AlwaysShowZeroLevel = !(bool)this.DetailReport1.GetCurrentColumnValue("ODAxisShouldNotStartAtZero"); 
    } 
    chrt.EndInit(); 

} 

现在,如果我看这个报表单独的报告显示正确。不同的分测验有不同的图表。

问题是当我显示收集报告子报告显示错误。所有图表都没有不同。最后一个子测试的图表会一直显示。

该脚本用来设置子报表的reportsource:

private void Detail1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) 
{ 
    ((XRSubreport)sender).ReportSource = this.DetailReport.GetCurrentRow() as XtraReport; 
} 

任何人这是怎么回事任何想法?

回答

0

找到了这个问题的答案。 它实际上与脚本无关。 我们将收集报告绑定到的对象具有名为TestXtrareports的属性,该属性是XtraReport的列表。 当我们创建这个对象时,我们在XtraReport上调用了CreateDocument,然后再将它添加到TestXtraReports中。 这是造成这个错误的原因。只需在TestXtraReports中删除XtraReports的createDocument语句即可解决此问题。 CreateDocument仍然在收集报告上调用。