This is a migrated thread and some comments may be shown as answers.

Master/SubReport passing parameters specified cast is not valid

2 Answers 263 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Khanh Nguyen
Top achievements
Rank 1
Khanh Nguyen asked on 11 Feb 2010, 07:44 PM
I created a Subreport that builds a chart that accepts a parameter  ( TerritoryId ),
when I run that report by itself it works fine. (see subreport.png )

When I create a Master report and pass in the parameter, the parameter seems to pass in ok. But the chart,
says Specified cast is not valid. (see master.png)
You can see from the msater.png that the parameter is being passed to the text box on the subreport, but not the chart.



The code for the  chart NeedDataSource on the subreport:
        private void chart1_NeedDataSource(object sender, EventArgs e) 
        { 
            Int64 territoryId = (Int64)this.ReportParameters["TerritoryId"].Value; 
 
            AdventureWorksDataSetTableAdapters.SalesByTerritoryTableAdapter adapter = new AdventureWorksDataSetTableAdapters.SalesByTerritoryTableAdapter(); 
            AdventureWorksDataSet.SalesByTerritoryDataTable data = adapter.GetData((Int32)territoryId); 
            Telerik.Reporting.Processing.Chart myChart = (Telerik.Reporting.Processing.Chart)sender; 
            myChart.DataSource = data.DefaultView; 
            chart1.PlotArea.XAxis.DataLabelsColumn = "OrderDate";             
            chart1.Series[0].DataYColumn = "AvgSales"
            chart1.Series[0].Type = Telerik.Reporting.Charting.ChartSeriesType.Bar; 
            chart1.Series[0].Name = "AvgSales for " + territoryId.ToString(); 
            chart1.PlotArea.XAxis.Appearance.LabelAppearance.RotationAngle = 90; 
 
        } 

The attached images are the subreport by itself, and the subreport inside a master report, passing in the parameter.

This just uses the AdventuresWork DB
The following  is the StoredProc used for the dataset.
create proc dbo.SalesByTerritory  
    @TerritoryId int = null 
as 
 
select top 10 T.TerritoryID, T.Nameconvert(varchar(5),S.OrderDate,101) as OrderDate, avg(S.SubTotal) as AvgSales 
from Sales.SalesTerritory T 
INNER JOIN Sales.SalesOrderHeader  S ON T.TerritoryID = S.TerritoryID 
WHERE (T.TerritoryID = @TerritoryID or @TerritoryId is null
group by T.TerritoryID, T.Name, S.OrderDate 
order by S.OrderDate, T.Name 


Here's how the designer code for the Master:
namespace sample 
    using System.ComponentModel; 
    using System.Drawing; 
    using System.Windows.Forms; 
    using Telerik.Reporting; 
    using Telerik.Reporting.Drawing; 
 
    partial class Master 
    { 
        #region Component Designer generated code 
        /// <summary> 
        /// Required method for telerik Reporting designer support - do not modify 
        /// the contents of this method with the code editor. 
        /// </summary> 
        private void InitializeComponent() 
        { 
            Telerik.Reporting.Drawing.StyleRule styleRule1 = new Telerik.Reporting.Drawing.StyleRule(); 
            Telerik.Reporting.Drawing.StyleRule styleRule2 = new Telerik.Reporting.Drawing.StyleRule(); 
            Telerik.Reporting.Drawing.StyleRule styleRule3 = new Telerik.Reporting.Drawing.StyleRule(); 
            Telerik.Reporting.Drawing.StyleRule styleRule4 = new Telerik.Reporting.Drawing.StyleRule(); 
            this.labelsGroupHeader = new Telerik.Reporting.GroupHeaderSection(); 
            this.territoryIDCaptionTextBox = new Telerik.Reporting.TextBox(); 
            this.nameCaptionTextBox = new Telerik.Reporting.TextBox(); 
            this.labelsGroupFooter = new Telerik.Reporting.GroupFooterSection(); 
            this.labelsGroup = new Telerik.Reporting.Group(); 
            this.pageHeader = new Telerik.Reporting.PageHeaderSection(); 
            this.reportNameTextBox = new Telerik.Reporting.TextBox(); 
            this.pageFooter = new Telerik.Reporting.PageFooterSection(); 
            this.currentTimeTextBox = new Telerik.Reporting.TextBox(); 
            this.pageInfoTextBox = new Telerik.Reporting.TextBox(); 
            this.reportHeader = new Telerik.Reporting.ReportHeaderSection(); 
            this.titleTextBox = new Telerik.Reporting.TextBox(); 
            this.detail = new Telerik.Reporting.DetailSection(); 
            this.territoryIDDataTextBox = new Telerik.Reporting.TextBox(); 
            this.nameDataTextBox = new Telerik.Reporting.TextBox(); 
            this.territoryDataSet = new sample.TerritoryDataSet(); 
            this.territoryDataSetTableAdapter1 = new sample.TerritoryDataSetTableAdapters.TerritoryDataSetTableAdapter(); 
            this.subReport1 = new Telerik.Reporting.SubReport(); 
            this.subReport2 = new sample.SubReport(); 
            ((System.ComponentModel.ISupportInitialize)(this.territoryDataSet)).BeginInit(); 
            ((System.ComponentModel.ISupportInitialize)(this.subReport2)).BeginInit(); 
            ((System.ComponentModel.ISupportInitialize)(this)).BeginInit(); 
            //  
            // labelsGroupHeader 
            //  
            this.labelsGroupHeader.Height = new Telerik.Reporting.Drawing.Unit(0.28125, Telerik.Reporting.Drawing.UnitType.Inch); 
            this.labelsGroupHeader.Items.AddRange(new Telerik.Reporting.ReportItemBase[] { 
            this.territoryIDCaptionTextBox, 
            this.nameCaptionTextBox}); 
            this.labelsGroupHeader.Name = "labelsGroupHeader"
            this.labelsGroupHeader.PrintOnEveryPage = true
            //  
            // territoryIDCaptionTextBox 
            //  
            this.territoryIDCaptionTextBox.Location = new Telerik.Reporting.Drawing.PointU(new Telerik.Reporting.Drawing.Unit(0.02083333395421505, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.02083333395421505, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.territoryIDCaptionTextBox.Name = "territoryIDCaptionTextBox"
            this.territoryIDCaptionTextBox.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(3.1979167461395264, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.20000000298023224, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.territoryIDCaptionTextBox.StyleName = "Caption"
            this.territoryIDCaptionTextBox.Value = "TerritoryID"
            //  
            // nameCaptionTextBox 
            //  
            this.nameCaptionTextBox.Location = new Telerik.Reporting.Drawing.PointU(new Telerik.Reporting.Drawing.Unit(3.2395832538604736, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.02083333395421505, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.nameCaptionTextBox.Name = "nameCaptionTextBox"
            this.nameCaptionTextBox.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(3.1979167461395264, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.20000000298023224, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.nameCaptionTextBox.StyleName = "Caption"
            this.nameCaptionTextBox.Value = "Name"
            //  
            // labelsGroupFooter 
            //  
            this.labelsGroupFooter.Height = new Telerik.Reporting.Drawing.Unit(0.28125, Telerik.Reporting.Drawing.UnitType.Inch); 
            this.labelsGroupFooter.Name = "labelsGroupFooter"
            this.labelsGroupFooter.Style.Visible = false
            //  
            // labelsGroup 
            //  
            this.labelsGroup.Bookmark = null
            this.labelsGroup.GroupFooter = this.labelsGroupFooter; 
            this.labelsGroup.GroupHeader = this.labelsGroupHeader; 
            //  
            // pageHeader 
            //  
            this.pageHeader.Height = new Telerik.Reporting.Drawing.Unit(0.28125, Telerik.Reporting.Drawing.UnitType.Inch); 
            this.pageHeader.Items.AddRange(new Telerik.Reporting.ReportItemBase[] { 
            this.reportNameTextBox}); 
            this.pageHeader.Name = "pageHeader"
            //  
            // reportNameTextBox 
            //  
            this.reportNameTextBox.Location = new Telerik.Reporting.Drawing.PointU(new Telerik.Reporting.Drawing.Unit(0.02083333395421505, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.02083333395421505, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.reportNameTextBox.Name = "reportNameTextBox"
            this.reportNameTextBox.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(6.4166665077209473, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.20000000298023224, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.reportNameTextBox.StyleName = "PageInfo"
            this.reportNameTextBox.Value = "Master"
            //  
            // pageFooter 
            //  
            this.pageFooter.Height = new Telerik.Reporting.Drawing.Unit(0.28125, Telerik.Reporting.Drawing.UnitType.Inch); 
            this.pageFooter.Items.AddRange(new Telerik.Reporting.ReportItemBase[] { 
            this.currentTimeTextBox, 
            this.pageInfoTextBox}); 
            this.pageFooter.Name = "pageFooter"
            //  
            // currentTimeTextBox 
            //  
            this.currentTimeTextBox.Location = new Telerik.Reporting.Drawing.PointU(new Telerik.Reporting.Drawing.Unit(0.02083333395421505, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.02083333395421505, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.currentTimeTextBox.Name = "currentTimeTextBox"
            this.currentTimeTextBox.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(3.1979167461395264, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.20000000298023224, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.currentTimeTextBox.StyleName = "PageInfo"
            this.currentTimeTextBox.Value = "=NOW()"
            //  
            // pageInfoTextBox 
            //  
            this.pageInfoTextBox.Location = new Telerik.Reporting.Drawing.PointU(new Telerik.Reporting.Drawing.Unit(3.2395832538604736, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.02083333395421505, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.pageInfoTextBox.Name = "pageInfoTextBox"
            this.pageInfoTextBox.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(3.1979167461395264, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.20000000298023224, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.pageInfoTextBox.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Right; 
            this.pageInfoTextBox.StyleName = "PageInfo"
            this.pageInfoTextBox.Value = "=PageNumber"
            //  
            // reportHeader 
            //  
            this.reportHeader.Height = new Telerik.Reporting.Drawing.Unit(0.80823493003845215, Telerik.Reporting.Drawing.UnitType.Inch); 
            this.reportHeader.Items.AddRange(new Telerik.Reporting.ReportItemBase[] { 
            this.titleTextBox}); 
            this.reportHeader.Name = "reportHeader"
            //  
            // titleTextBox 
            //  
            this.titleTextBox.Name = "titleTextBox"
            this.titleTextBox.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(6.4583334922790527, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.78740161657333374, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.titleTextBox.StyleName = "Title"
            this.titleTextBox.Value = "Master"
            //  
            // detail 
            //  
            this.detail.Height = new Telerik.Reporting.Drawing.Unit(2.2292652130126953, Telerik.Reporting.Drawing.UnitType.Inch); 
            this.detail.Items.AddRange(new Telerik.Reporting.ReportItemBase[] { 
            this.territoryIDDataTextBox, 
            this.nameDataTextBox, 
            this.subReport1}); 
            this.detail.Name = "detail"
            //  
            // territoryIDDataTextBox 
            //  
            this.territoryIDDataTextBox.Location = new Telerik.Reporting.Drawing.PointU(new Telerik.Reporting.Drawing.Unit(0.02083333395421505, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.02083333395421505, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.territoryIDDataTextBox.Name = "territoryIDDataTextBox"
            this.territoryIDDataTextBox.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(3.1979167461395264, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.20000000298023224, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.territoryIDDataTextBox.StyleName = "Data"
            this.territoryIDDataTextBox.Value = "=Fields.TerritoryID"
            //  
            // nameDataTextBox 
            //  
            this.nameDataTextBox.Location = new Telerik.Reporting.Drawing.PointU(new Telerik.Reporting.Drawing.Unit(3.2395832538604736, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.02083333395421505, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.nameDataTextBox.Name = "nameDataTextBox"
            this.nameDataTextBox.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(3.1979167461395264, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.20000000298023224, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.nameDataTextBox.StyleName = "Data"
            this.nameDataTextBox.Value = "=Fields.Name"
            //  
            // territoryDataSet 
            //  
            this.territoryDataSet.DataSetName = "TerritoryDataSet"
            this.territoryDataSet.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema; 
            //  
            // territoryDataSetTableAdapter1 
            //  
            this.territoryDataSetTableAdapter1.ClearBeforeFill = true
            //  
            // subReport1 
            //  
            this.subReport1.Location = new Telerik.Reporting.Drawing.PointU(new Telerik.Reporting.Drawing.Unit(0.099999986588954926, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.32926526665687561, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.subReport1.Name = "subReport1"
            this.subReport1.Parameters.Add(new Telerik.Reporting.Parameter("TerritoryId""=Fields.TerritoryID")); 
            this.subReport1.ReportSource = this.subReport2; 
            this.subReport1.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(5.7000007629394531, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(1.7000001668930054, Telerik.Reporting.Drawing.UnitType.Inch)); 
            this.subReport1.NeedDataSource += new System.EventHandler(this.subReport1_NeedDataSource); 
            //  
            // Master 
            //  
            this.DataSource = this.territoryDataSet; 
            this.Groups.AddRange(new Telerik.Reporting.Group[] { 
            this.labelsGroup}); 
            this.Items.AddRange(new Telerik.Reporting.ReportItemBase[] { 
            this.labelsGroupHeader, 
            this.labelsGroupFooter, 
            this.pageHeader, 
            this.pageFooter, 
            this.reportHeader, 
            this.detail}); 
            this.PageSettings.Landscape = false
            this.PageSettings.Margins.Bottom = new Telerik.Reporting.Drawing.Unit(1, Telerik.Reporting.Drawing.UnitType.Inch); 
            this.PageSettings.Margins.Left = new Telerik.Reporting.Drawing.Unit(1, Telerik.Reporting.Drawing.UnitType.Inch); 
            this.PageSettings.Margins.Right = new Telerik.Reporting.Drawing.Unit(1, Telerik.Reporting.Drawing.UnitType.Inch); 
            this.PageSettings.Margins.Top = new Telerik.Reporting.Drawing.Unit(1, Telerik.Reporting.Drawing.UnitType.Inch); 
            this.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.Letter; 
            this.Style.BackgroundColor = System.Drawing.Color.White; 
            styleRule1.Selectors.AddRange(new Telerik.Reporting.Drawing.ISelector[] { 
            new Telerik.Reporting.Drawing.StyleSelector("Title")}); 
            styleRule1.Style.Color = System.Drawing.Color.Black; 
            styleRule1.Style.Font.Bold = true
            styleRule1.Style.Font.Italic = false
            styleRule1.Style.Font.Name = "Tahoma"
            styleRule1.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(20, Telerik.Reporting.Drawing.UnitType.Point); 
            styleRule1.Style.Font.Strikeout = false
            styleRule1.Style.Font.Underline = false
            styleRule2.Selectors.AddRange(new Telerik.Reporting.Drawing.ISelector[] { 
            new Telerik.Reporting.Drawing.StyleSelector("Caption")}); 
            styleRule2.Style.Color = System.Drawing.Color.Black; 
            styleRule2.Style.Font.Name = "Tahoma"
            styleRule2.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(11, Telerik.Reporting.Drawing.UnitType.Point); 
            styleRule2.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Middle; 
            styleRule3.Selectors.AddRange(new Telerik.Reporting.Drawing.ISelector[] { 
            new Telerik.Reporting.Drawing.StyleSelector("Data")}); 
            styleRule3.Style.Font.Name = "Tahoma"
            styleRule3.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(11, Telerik.Reporting.Drawing.UnitType.Point); 
            styleRule3.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Middle; 
            styleRule4.Selectors.AddRange(new Telerik.Reporting.Drawing.ISelector[] { 
            new Telerik.Reporting.Drawing.StyleSelector("PageInfo")}); 
            styleRule4.Style.Font.Name = "Tahoma"
            styleRule4.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(11, Telerik.Reporting.Drawing.UnitType.Point); 
            styleRule4.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Middle; 
            this.StyleSheet.AddRange(new Telerik.Reporting.Drawing.StyleRule[] { 
            styleRule1, 
            styleRule2, 
            styleRule3, 
            styleRule4}); 
            this.Width = new Telerik.Reporting.Drawing.Unit(6.4583334922790527, Telerik.Reporting.Drawing.UnitType.Inch); 
            ((System.ComponentModel.ISupportInitialize)(this.territoryDataSet)).EndInit(); 
            ((System.ComponentModel.ISupportInitialize)(this.subReport2)).EndInit(); 
            ((System.ComponentModel.ISupportInitialize)(this)).EndInit(); 
 
        } 
        #endregion 
 
        private GroupHeaderSection labelsGroupHeader; 
        private Telerik.Reporting.TextBox territoryIDCaptionTextBox; 
        private Telerik.Reporting.TextBox nameCaptionTextBox; 
        private GroupFooterSection labelsGroupFooter; 
        private Group labelsGroup; 
        private PageHeaderSection pageHeader; 
        private Telerik.Reporting.TextBox reportNameTextBox; 
        private PageFooterSection pageFooter; 
        private Telerik.Reporting.TextBox currentTimeTextBox; 
        private Telerik.Reporting.TextBox pageInfoTextBox; 
        private ReportHeaderSection reportHeader; 
        private Telerik.Reporting.TextBox titleTextBox; 
        private DetailSection detail; 
        private Telerik.Reporting.TextBox territoryIDDataTextBox; 
        private Telerik.Reporting.TextBox nameDataTextBox; 
        private TerritoryDataSet territoryDataSet; 
        private sample.TerritoryDataSetTableAdapters.TerritoryDataSetTableAdapter territoryDataSetTableAdapter1; 
        private Telerik.Reporting.SubReport subReport1; 
        private SubReport subReport2; 
 
    } 

And the desinger code for the SubReport:
namespace sample 
    using System.ComponentModel; 
    using System.Drawing; 
    using System.Windows.Forms; 
    using Telerik.Reporting; 
    using Telerik.Reporting.Drawing; 
 
    partial class SubReport 
    { 
        #region Component Designer generated code 
        /// <summary> 
        /// Required method for telerik Reporting designer support - do not modify 
        /// the contents of this method with the code editor. 
        /// </summary> 
        private void InitializeComponent() 
        { 
          Telerik.Reporting.Charting.ChartSeries chartSeries1 = new Telerik.Reporting.Charting.ChartSeries(); 
          Telerik.Reporting.ReportParameter reportParameter1 = new Telerik.Reporting.ReportParameter(); 
          this.detail = new Telerik.Reporting.DetailSection(); 
          this.textBox1 = new Telerik.Reporting.TextBox(); 
          this.chart1 = new Telerik.Reporting.Chart(); 
          this.textBox2 = new Telerik.Reporting.TextBox(); 
          ((System.ComponentModel.ISupportInitialize)(this)).BeginInit(); 
          //  
          // detail 
          //  
          this.detail.Height = new Telerik.Reporting.Drawing.Unit(4.2000002861022949, Telerik.Reporting.Drawing.UnitType.Inch); 
          this.detail.Items.AddRange(new Telerik.Reporting.ReportItemBase[] { 
            this.textBox1, 
            this.chart1, 
            this.textBox2}); 
          this.detail.Name = "detail"
          //  
          // textBox1 
          //  
          this.textBox1.Location = new Telerik.Reporting.Drawing.PointU(new Telerik.Reporting.Drawing.Unit(2.9000003337860107, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.099999986588954926, Telerik.Reporting.Drawing.UnitType.Inch)); 
          this.textBox1.Name = "textBox1"
          this.textBox1.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(2.3000001907348633, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.30000004172325134, Telerik.Reporting.Drawing.UnitType.Inch)); 
          this.textBox1.Style.Color = System.Drawing.Color.Blue; 
          this.textBox1.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(14, Telerik.Reporting.Drawing.UnitType.Point); 
          this.textBox1.Value = "= Parameters.TerritoryId"
          //  
          // chart1 
          //  
          this.chart1.BitmapResolution = 96F; 
          this.chart1.ImageFormat = System.Drawing.Imaging.ImageFormat.Emf; 
          this.chart1.IntelligentLabelsEnabled = true
          this.chart1.Location = new Telerik.Reporting.Drawing.PointU(new Telerik.Reporting.Drawing.Unit(0.30000004172325134, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.60000008344650269, Telerik.Reporting.Drawing.UnitType.Inch)); 
          this.chart1.Name = "chart1"
          this.chart1.PlotArea.XAxis.Appearance.CustomFormat = "MM/dd"
          this.chart1.PlotArea.XAxis.Appearance.ValueFormat = Telerik.Reporting.Charting.Styles.ChartValueFormat.ShortDate; 
          this.chart1.PlotArea.XAxis.IsZeroBased = false
          this.chart1.PlotArea.XAxis.MinValue = 1; 
          this.chart1.PlotArea.YAxis.IsZeroBased = false
          this.chart1.PlotArea.YAxis.MaxValue = 90; 
          this.chart1.PlotArea.YAxis.MinValue = 10; 
          this.chart1.PlotArea.YAxis.Step = 10; 
          chartSeries1.Name = "Series 1"
          this.chart1.Series.AddRange(new Telerik.Reporting.Charting.ChartSeries[] { 
            chartSeries1}); 
          this.chart1.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(5.1000003814697266, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(3.1000001430511475, Telerik.Reporting.Drawing.UnitType.Inch)); 
          this.chart1.NeedDataSource += new System.EventHandler(this.chart1_NeedDataSource); 
          //  
          // textBox2 
          //  
          this.textBox2.Location = new Telerik.Reporting.Drawing.PointU(new Telerik.Reporting.Drawing.Unit(0.40000009536743164, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.099999986588954926, Telerik.Reporting.Drawing.UnitType.Inch)); 
          this.textBox2.Name = "textBox2"
          this.textBox2.Size = new Telerik.Reporting.Drawing.SizeU(new Telerik.Reporting.Drawing.Unit(2.4000000953674316, Telerik.Reporting.Drawing.UnitType.Inch), new Telerik.Reporting.Drawing.Unit(0.30000004172325134, Telerik.Reporting.Drawing.UnitType.Inch)); 
          this.textBox2.Style.Color = System.Drawing.Color.Blue; 
          this.textBox2.Style.Font.Size = new Telerik.Reporting.Drawing.Unit(14, Telerik.Reporting.Drawing.UnitType.Point); 
          this.textBox2.Value = "Passed in Parameter"
          //  
          // SubReport 
          //  
          this.Items.AddRange(new Telerik.Reporting.ReportItemBase[] { 
            this.detail}); 
          this.PageSettings.Landscape = false
          this.PageSettings.Margins.Bottom = new Telerik.Reporting.Drawing.Unit(1, Telerik.Reporting.Drawing.UnitType.Inch); 
          this.PageSettings.Margins.Left = new Telerik.Reporting.Drawing.Unit(1, Telerik.Reporting.Drawing.UnitType.Inch); 
          this.PageSettings.Margins.Right = new Telerik.Reporting.Drawing.Unit(1, Telerik.Reporting.Drawing.UnitType.Inch); 
          this.PageSettings.Margins.Top = new Telerik.Reporting.Drawing.Unit(1, Telerik.Reporting.Drawing.UnitType.Inch); 
          this.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.Letter; 
          reportParameter1.Name = "TerritoryId"
          reportParameter1.Type = Telerik.Reporting.ReportParameterType.Integer; 
          reportParameter1.UI.Visible = true
          reportParameter1.Value = "9"
          this.ReportParameters.Add(reportParameter1); 
          this.Style.BackgroundColor = System.Drawing.Color.White; 
          ((System.ComponentModel.ISupportInitialize)(this)).EndInit(); 
 
        } 
        #endregion 
 
        private Telerik.Reporting.DetailSection detail; 
        private Telerik.Reporting.TextBox textBox1; 
        private Chart chart1; 
        private Telerik.Reporting.TextBox textBox2; 
    } 

Basically the subreport has a textbox that echos out the passed in parameter and the chart.
running it alone the textbox populates and the chart populates.

Running the MasterReport with the Subreport , the textbox populates but the chart causes the cast error.




2 Answers, 1 is accepted

Sort by
0
Khanh Nguyen
Top achievements
Rank 1
answered on 13 Feb 2010, 02:31 AM
I was able to fixed the cast error, by changing the integer type from
Int64 territoryId = (Int64)this.ReportParameters["TerritoryId"].Value;  

to
Int64 territoryId = Convert.ToInt64(this.ReportParameters["TerritoryId"].Value);  

so no more error on casting, BUT the subreport (chart does not update it's value, it only uses the first value that came in.
each detail value is not being passed to the chart, the value is passed to the TextBox, but not the chart's need datasource.

the subreport contains the textField and the chart,
shouldn't  the chart's need datasource get fired everytime  a paramter comes in? (the parameter coming is echoed in the textfield,
and from the master table..

see image. seems like the chart's need datasource does not get fired, but uses the first  item passed in. when i go to the next record of the master table. the textbox is updated, w/ 6, but the chart stayed at 9.


0
Steve
Telerik team
answered on 15 Feb 2010, 12:59 PM
Hi Khanh,

You can easily verify whether the NeedDataSource event of the chart is fired for every change of the parameter by placing a break point in it. Looking at your code and if the chart item is in the subreport report, you should be using the processing report parameters instead i.e.

Int64 territoryId = (Int64)this.ReportParameters["TerritoryId"].Value;

should be

Telerik.Reporting.Processing.Chart chart = sender as Telerik.Reporting.Processing.Chart;
Telerik.Reporting.Processing.Report rpt = (Telerik.Reporting.Processing.Report)chart.Report;
Int64 territoryId = (Int64)rpt.Parameters["TerritoryId"];

Place a break point in the event handler and debug the returned values to get an idea of what is being passed and why.

Sincerely yours,
Steve
the Telerik team

Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
Tags
General Discussions
Asked by
Khanh Nguyen
Top achievements
Rank 1
Answers by
Khanh Nguyen
Top achievements
Rank 1
Steve
Telerik team
Share this question
or