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

Multiple Lines on Telerik Chart

0 Answers 42 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
Ebenezer
Top achievements
Rank 1
Ebenezer asked on 23 Jun 2014, 08:22 PM
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);

            }
        }

No answers yet. Maybe you can help?

Tags
General Discussions
Asked by
Ebenezer
Top achievements
Rank 1
Share this question
or