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);
}
}
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);
}
}