Multiple Lines on Telerik Chart

1 posts, 0 answers
  1. Ebenezer
    Ebenezer avatar
    39 posts
    Member since:
    Dec 2012

    Posted 23 Jun 2014 Link to this post

    I have two separate Date columns  on the same SQL Server table, Date column --(1) Name = rowView["Name"].ToString() and Date column -- (2)   Name = rowView["NameNew"].ToString() .  I want to compare the dates and if they not equal, than draw two separate line on the same chart. I can't seem to get it working, but I can draw one line at a time. Attached see mu code. Any help will be appreciated. Below is my code

     using System;
        using System.ComponentModel;
        using System.Drawing;
        using System.Windows.Forms;
        using Telerik.Reporting;
        using Telerik.Reporting.Drawing;
        using System.Data.SqlClient;
        using System.Data;
        using Telerik.Reporting.Charting;
        using System.Collections.Generic;
        using System.Linq;

        /// <summary>
        /// Summary description for rptWaterfall.
        /// </summary>
        public partial class rptNewReport : Telerik.Reporting.Report
        {
            private Telerik.Reporting.Charting.ChartSeries _series;
            private Telerik.Reporting.Charting.ChartSeries _seriesNew;
            public rptNewReport ()
            {
                /// <summary>
                /// Required for telerik Reporting designer support
                /// </summary>
                InitializeComponent();

                //
                // TODO: Add any constructor code after InitializeComponent call
                //
            }

            private void chart1_NeedDataSource(object sender, EventArgs e)
            {
                DataSet ds;
                Telerik.Reporting.Processing.Chart chart;
                DateTime stepDate;
                DateTime stepDateNew;
                string interval,  Name,  NameNew, pointLabel, pointLabelnew, interval2;
                int riskWeight, likeNew, idOld, step, stId;

                if (_series == null)
                {

                    chart = sender as Telerik.Reporting.Processing.Chart;

                    ds = CreateChartDataSet();

                    DataView view = ds.Tables[0].DefaultView;

                    Telerik.Reporting.Chart chartDef = (Telerik.Reporting.Chart)chart.ItemDefinition;
                    _series = new Telerik.Reporting.Charting.ChartSeries();

                    Name = string.Empty;
                    

                    SetXAxisRange(view);

                    foreach (DataRowView rowView in view)
                    {
                        staId = (int)rowView["ID"];
                        step = int.Parse(rowView["Step"].ToString());
                        riskWeight = (int)rowView["averageweight"];
                        interval = rowView["Interval"].ToString();
                        interval2 = rowView["IntervalNew"].ToString();
                        Name = rowView["Name"].ToString();
                        likelihood = (int)rowView["Likelihood"];
                        likeNew = (int)rowView["idOld"];                    

                        if (DateTime.TryParse(interval, out stepDate))
                            pointLabel = stepDate.ToString("MM/dd/yy");
                        else
                            pointLabel = string.Empty;                   


                        if (DateTime.TryParse(interval, out stepDate))
                        {
                            string str = null;                         
                            str += stepDate.ToString("MM/dd/yy");                         
                            pointLabel = str;
                        }
                        else
                            pointLabel = string.Empty;

                       

                        Telerik.Reporting.Charting.ChartSeriesItem seriesItem = CreateSeriesItem(pointLabel, averageweight, stId);

                        _series.AddItem(seriesItem);
                    }

                    if (string.IsNullOrEmpty(Name))
                        Name = "ESPN Report";

                    _series.Appearance.LineSeriesAppearance.Color = Color.Cyan;
                    _series.Name = Name;
                    _series.Type = ChartSeriesType.Line;
                    chart1.ChartTitle.TextBlock.Text = "New Report";
                    chartDef.Series.Clear();
                    chartDef.Series.Add(_series);
                }
                if (_seriesNew == null)
                {

                    chart = sender as Telerik.Reporting.Processing.Chart;

                    ds = CreateChartDataSet();
                    DataView view2 = ds.Tables[0].DefaultView;

                    Telerik.Reporting.Chart chartDefNew = (Telerik.Reporting.Chart)chart.ItemDefinition;
                    _seriesNew = new Telerik.Reporting.Charting.ChartSeries();


                    NameNew = string.Empty;
                    SetXAxisRangeNew(view2);

                    foreach (DataRowView rowView2 in view2)
                    {
                        staId = (int)rowView["ID"];
                        step = int.Parse(rowView["Step"].ToString());
                        riskWeight = (int)rowView["averageweight"];
                        interval = rowView["Interval"].ToString();
                        interval2 = rowView["IntervalNew"].ToString();
                        Name = rowView["NameNew"].ToString();
                        likelihood = (int)rowView["Likelihood"];
                        likeNew = (int)rowView["idOld"];       


                        if (DateTime.TryParse(interval2, out stepDateNew) )
                        {
                            string strNew = null;
                            strNew += stepDateNew.ToString("MM/dd/yy");
                            pointLabelnew = strNew;
                        }
                        else
                            pointLabelnew = string.Empty;


                        Telerik.Reporting.Charting.ChartSeriesItem seriesItemNew = CreateSeriesItemNew(pointLabelnew,averageweight, stId);
                        _seriesNew.AddItem(seriesItemNew);
                    }

                    if (string.IsNullOrEmpty(NameNew))
                        NameNew = "New Report";

                    _seriesNew.Appearance.LineSeriesAppearance.Color = Color.Black;
                    _seriesNew.Name = NameNew;
                    _seriesNew.Type = ChartSeriesType.Line;

                    chart1.ChartTitle.TextBlock.Text = "New Chart Rport";
                    chartDefNew.Series.Clear();
                    chartDefNew.Series.Add(_seriesNew);



                }
            }

            private Telerik.Reporting.Charting.ChartSeriesItem CreateSeriesItem(string pointLabel, int riskWeight, int statusId)
            {
                Telerik.Reporting.Charting.ChartSeriesItem seriesItem = new Telerik.Reporting.Charting.ChartSeriesItem(averageweight, pointLabel);
                seriesItem.Label.TextBlock.Appearance.Corners.SetCornersType(Telerik.Reporting.Charting.Styles.CornerType.Round);
                seriesItem.Label.TextBlock.Appearance.FillStyle.FillType = Telerik.Reporting.Charting.Styles.FillType.Solid;

                if (statusId == 1) 
                {
                    seriesItem.Label.TextBlock.Appearance.FillStyle.MainColor = Color.White;
                    seriesItem.Label.TextBlock.Appearance.TextProperties.Color = Color.Black;
                }
                else if (statusId == 2) 
                {
                    seriesItem.Label.TextBlock.Appearance.FillStyle.MainColor = Color.Gray;
                    seriesItem.Label.TextBlock.Appearance.TextProperties.Color = Color.Black;
                }
                else//Complete
                {
                    seriesItem.Label.TextBlock.Appearance.FillStyle.MainColor = Color.Black;
                    seriesItem.Label.TextBlock.Appearance.TextProperties.Color = Color.White;
                }

                return seriesItem;
            }

            private Telerik.Reporting.Charting.ChartSeriesItem CreateSeriesItemNew(string pointLabelnew,int riskWeight, int statusId)
            {
                Telerik.Reporting.Charting.ChartSeriesItem seriesItemNew = new Telerik.Reporting.Charting.ChartSeriesItem(riskWeight, pointLabelnew);
                seriesItemNew.Label.TextBlock.Appearance.Corners.SetCornersType(Telerik.Reporting.Charting.Styles.CornerType.Round);
                
                if (statusId == 1) 
                {
                    seriesItemNew.Label.TextBlock.Appearance.FillStyle.MainColor = Color.Red;
                    seriesItemNew.Label.TextBlock.Appearance.TextProperties.Color = Color.Black;
                }
                else if (statusId == 2) 
                {
                    seriesItemNew.Label.TextBlock.Appearance.FillStyle.MainColor = Color.Gray;
                    seriesItemNew.Label.TextBlock.Appearance.TextProperties.Color = Color.Black;
                }
                else 
                {
                    seriesItemNew.Label.TextBlock.Appearance.FillStyle.MainColor = Color.Black;
                    seriesItemNew.Label.TextBlock.Appearance.TextProperties.Color = Color.White;
                }

                return seriesItemNew;
            }


            private void SetXAxisRange(DataView view)
            {
                int interval, firstInterval, lastInterval, interval2;

                lastInterval = int.MinValue;
                firstInterval = int.MaxValue;

                 
                foreach (DataRowView rowView in view)
                {
                    if (int.TryParse(rowView["Step"].ToString(), out interval))
                    {
                        if (interval > lastInterval)
                            lastInterval = interval;
                        if (interval < firstInterval)
                            firstInterval = interval;
                    }
                }

                //Get min and max step in result set
                foreach (DataRowView rowView in view)
                {
                    if (int.TryParse(rowView["Step"].ToString(), out interval2))
                    {
                        if (interval2 > lastInterval)
                            lastInterval = interval2;
                        if (interval2 < firstInterval)
                            firstInterval = interval2;
                    }
                }

                double start = firstInterval;
                double end = lastInterval;

                //Avoid divide by zero error
                if (view.Count > 0)
                {
                    chart1.PlotArea.XAxis.AddRange(start, end, 1);
                }
            }


            private void SetXAxisRangeNew(DataView view2)
            {
                int interval2, firstInterval, lastInterval;

                lastInterval = int.MinValue;
                firstInterval = int.MaxValue;

                //Get min and max step in result set
                foreach (DataRowView rowView2 in view2)
                {
                    if (int.TryParse(rowView2["Step"].ToString(), out interval2))
                    {
                        if (interval2 > lastInterval)
                            lastInterval = interval2;
                        if (interval2 < firstInterval)
                            firstInterval = interval2;
                    }
                }

                double start = firstInterval;
                double end = lastInterval;

                //Avoid divide by zero error
                if (view2.Count > 0)
                {


                    chart1.PlotArea.XAxis.AddRange(start, end, 1);

                }
            }

Back to Top