Page 1 of 1
Click Series Event Not Getting triggerred for WebChart
Posted: Tue Feb 21, 2012 11:39 am
by 15661418
Hi,
I am using FastLine HighSpeed Chart for Trending. The Click Series Event is not getting fired.
I need the same to display X and Y values on mouseclick of the series.
Plz Help. Its urgent.
Re: Click Series Event Not Getting triggerred for WebChart
Posted: Wed Feb 22, 2012 11:53 am
by 10050769
Hello venus,
I have made a simple example where there is two FastLine series and I get the X and Y values clicking the series. I think you can use a similar code to achieve as you want:
Code: Select all
protected Steema.TeeChart.Tools.SeriesHotspot seriesHotspot1;
private int clickedX;
private int clickedY;
private string msgText;
protected void Page_Load(object sender, System.EventArgs e)
{
clickedX = -1;
clickedY = -1;
msgText = "";
Steema.TeeChart.Chart ch1 = WebChart1.Chart;
MemoryStream tmpChart = new MemoryStream();
ch1.Aspect.View3D = false;
if (Session["ch1"] == null)
{
//setup Chart
if (ch1.Series.Count < 2)
{
ch1.Series.Add(new Steema.TeeChart.Styles.FastLine());
ch1.Series.Add(new Steema.TeeChart.Styles.FastLine());
}
ch1.Series[0].Color = Color.FromArgb(255, 199, 26);
ch1.Series[1].Color = Color.FromArgb(106, 106, 255);
(ch1.Series[0] as Steema.TeeChart.Styles.FastLine).LinePen.Width = 5;
(ch1.Series[1] as Steema.TeeChart.Styles.FastLine).LinePen.Width = 5;
ch1.Series[0].FillSampleValues(6);
ch1.Series[1].FillSampleValues(6);
this.seriesHotspot1 = new Steema.TeeChart.Tools.SeriesHotspot();
seriesHotspot1.HelperScript = Steema.TeeChart.Tools.HotspotHelperScripts.Annotation;
seriesHotspot1.HotspotCanvasIndex = 499;
seriesHotspot1.MapAction = Steema.TeeChart.Styles.MapAction.Script;
seriesHotspot1.MapElements = "";
WebChart1.ClickBackground += new Steema.TeeChart.Web.WebChart.ClickEventHandler(this.WebChart1_ClickBackground);
WebChart1.AfterDraw += new Steema.TeeChart.PaintChartEventHandler(this.WebChart1_AfterDraw);
WebChart1.ClickSeries += new Steema.TeeChart.Web.WebChart.SeriesEventHandler(this.WebChart1_ClickSeries);
//export Chart to a MemoryStream template
ch1.Export.Template.Save(tmpChart);
//save template to a Session variable
Session.Add("ch1", tmpChart);
}
else
{
//retrieve the session stored Chart
tmpChart = (MemoryStream)Session["ch1"];
//set the Stream position to 0 as the last read/write
//will have moved the position to the end of the stream
tmpChart.Position = 0;
//import saved Chart
ch1.Import.Template.Load(tmpChart);
WebChart1.ClickBackground += new Steema.TeeChart.Web.WebChart.ClickEventHandler(this.WebChart1_ClickBackground);
WebChart1.AfterDraw += new Steema.TeeChart.PaintChartEventHandler(this.WebChart1_AfterDraw);
WebChart1.ClickSeries += new Steema.TeeChart.Web.WebChart.SeriesEventHandler(this.WebChart1_ClickSeries);
}
}
private void WebChart1_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
{
//output text message to the rendered Chart.
if (clickedX != -1)
{
g.Font.Bold = true;
g.Font.Color = Color.Blue;
g.TextOut(clickedX, clickedY, msgText);
}
}
private void WebChart1_ClickBackground(object sender, System.Web.UI.ImageClickEventArgs e)
{
//event triggered when any point on the Chart is clicked. If the ClickSeries event is active
//it will take precedence when a Series is clicked.
clickedX = e.X;
clickedY = e.Y;
msgText = "Clicked background\n\rX:" + WebChart1.Chart.Axes.Bottom.CalcPosPoint(clickedX).ToString("#0.00")
+ ", Y:" + WebChart1.Chart.Axes.Left.CalcPosPoint(clickedY).ToString("#0.00");
}
private void WebChart1_ClickSeries(object sender, Steema.TeeChart.Styles.Series s, int valueIndex, System.EventArgs e)
{
Steema.TeeChart.Chart tChart = ((WebChart)sender).Chart;
clickedX = s.CalcXPos(valueIndex);
clickedY = s.CalcYPos(valueIndex);
msgText = "Series: " + tChart.Series.IndexOf(s).ToString() + "\n\rValue: " + s.YValues[valueIndex].ToString("#0.00");
}
Can you tell us if previous code works as you expect?
I hope will helps.
Thanks,
Re: Click Series Event Not Getting triggerred for WebChart
Posted: Thu Feb 23, 2012 4:06 am
by 15661418
I have the below code. For me the Click series event is not getting triggreed. Also Scroll is not working. Plz Help.
When i try ur code in a seperate Web Page. It works fine. I guess the problem exists with my code.
Code: Select all
public partial class Nacelle : System.Web.UI.Page
{
private int clickedX;
private int clickedY;
private string msgText;
MemoryStream tmpChart1 = new MemoryStream();
protected void Page_Load(object sender, EventArgs e)
{
clickedX = -1;
clickedY = -1;
msgText = "";
if (!Page.IsPostBack)
{
Steema.TeeChart.Chart chart1 = WebChart1.Chart;
((Steema.TeeChart.Tools.ScrollTool)chart1.Tools[0]).Active = false;
Steema.TeeChart.Chart chart2 = WebChart2.Chart;
((Steema.TeeChart.Tools.ScrollTool)chart2.Tools[0]).Active = false;
}
string sQuery = "select PowerMean as Signal, cmstimestamp from aa.vwCMSData where cmstimestamp between '2006-01-01' and '2006-12-31' and unitid = 67754 order by cmstimestamp";
PlotTeeChart(WebChart2.Chart, sQuery);
WebChart2.Width = 1000;
sQuery = "select RMSNacelleDownWind as Signal, cmstimestamp from aa.vwCMSData where cmstimestamp between '2006-01-01' and '2006-12-31' and unitid = 67754 order by cmstimestamp";
PlotTeeChart(WebChart1.Chart, sQuery);
WebChart1.Width = 1000;
WebChart1.ClickSeries += new Steema.TeeChart.Web.WebChart.SeriesEventHandler(this.WebChart1_ClickSeries);
WebChart2.ClickSeries += new Steema.TeeChart.Web.WebChart.SeriesEventHandler(this.WebChart2_ClickSeries);
ZoomingCode(WebChart2, WebChart2.Chart, "SessionChart2");
ZoomingCode(WebChart1, WebChart1.Chart, "SessionChart1");
//}
}
//************** Zooming Code Starts for Webchart2*******************
protected void ZoomingCode(Steema.TeeChart.Web.WebChart Webchartdemo,Steema.TeeChart.Chart ch1,string strSession)
{
// Steema.TeeChart.Chart ch1 = WebChart2.Chart;
System.IO.MemoryStream tmpChart = new System.IO.MemoryStream();
if (Session[strSession] == null)
{
if (ch1.Tools.Count < 2)
{
ch1.Tools.Add(new Steema.TeeChart.Tools.ZoomTool());
ch1.Tools.Add(new Steema.TeeChart.Tools.SeriesHotspot());
}
ch1.Export.Template.Save(tmpChart);
// ch1.Export.Image.PDF.Save("C:\\Files\\2.pdf");
Session.Add(strSession, tmpChart);
}
else
{
tmpChart = (System.IO.MemoryStream)Session[strSession];
tmpChart.Position = 0;
Webchartdemo.Chart.Import.Template.Load(tmpChart);
CheckZoom(Webchartdemo);
}
}
private void CheckZoom(Steema.TeeChart.Web.WebChart wChart)
{
System.Collections.ArrayList zoomedState = (System.Collections.ArrayList)Session[wChart.ID + "Zoomed"];
zoomedState = ((Steema.TeeChart.Tools.ZoomTool)wChart.Chart.Tools[0]).SetCurrentZoom(Request,
zoomedState);
if (zoomedState == null)
Session.Remove(wChart.ID + "Zoomed");
else
Session.Add(wChart.ID + "Zoomed", zoomedState);
}
//************** Zooming Code ends for Webchart2*******************
protected void PlotTeeChart(Steema.TeeChart.Chart Chart1, string strSQL)
{
DataAccessLayer objDAL = new DataAccessLayer();
objDAL.OpenConnection();
DataSet ds = objDAL.ExecuteQuery(strSQL);
objDAL.CloseConnection();
// Steema.TeeChart.Chart Chart2 = WebChart2.Chart;
Steema.TeeChart.Styles.FastLine series1 = new Steema.TeeChart.Styles.FastLine(Chart1);
Chart1.Aspect.View3D = false;
Chart1.Aspect.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;
series1.XValues.DateTime = true;
series1.DateTimeFormat = "dd/MM/yyyy";
series1.DataSource = ds;
series1.XValues.DataMember = ds.Tables[0].Columns[1].ToString();
series1.YValues.DataMember = ds.Tables[0].Columns[0].ToString();
Chart1.Axes.Bottom.Increment = Steema.TeeChart.Utils.GetDateTimeStep(Steema.TeeChart.DateTimeSteps.OneMonth);
Chart1.Axes.Bottom.Labels.ExactDateTime = true;
Chart1.Axes.Bottom.Labels.DateTimeFormat = "dd/MM/yyyy";
Chart1.Axes.Bottom.Labels.Angle = 90;
}
protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
{
Steema.TeeChart.Chart chart1 = WebChart1.Chart;
((Steema.TeeChart.Tools.ScrollTool)chart1.Tools[0]).Active = true;
Steema.TeeChart.Chart chart2 = WebChart2.Chart;
((Steema.TeeChart.Tools.ScrollTool)chart2.Tools[0]).Active = true;
}
protected void ImageButton3_Click(object sender, ImageClickEventArgs e)
{
WebChart1.Chart.Axes.Left.Grid.Visible = false;
WebChart1.Chart.Axes.Bottom.Grid.Visible = false;
WebChart2.Chart.Axes.Left.Grid.Visible = false;
WebChart2.Chart.Axes.Bottom.Grid.Visible = false;
}
protected void WebChart2_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
{
//output text message to the rendered Chart.
if (clickedX != -1)
{
g.Font.Bold = true;
g.Font.Color = Color.Blue;
g.TextOut(clickedX, clickedY, msgText);
}
}
protected void WebChart1_ClickSeries(object sender, Series s, int valueIndex, EventArgs e)
{
Steema.TeeChart.Chart tChart = ((WebChart)sender).Chart;
clickedX = s.CalcXPos(valueIndex);
clickedY = s.CalcYPos(valueIndex);
msgText = "Value(X,Y): (" + s.XValues[valueIndex].ToString() + "," + s.YValues[valueIndex].ToString() + ")";
Steema.TeeChart.Tools.ColorLine colorLine1 = new Steema.TeeChart.Tools.ColorLine(WebChart1.Chart);
colorLine1.Axis = WebChart1.Chart.Axes.Bottom;
colorLine1.Active = true;
colorLine1.AllowDrag = true;
colorLine1.Value = s.XValues[valueIndex];
colorLine1.Pen.Color = Color.Blue;
// colorLine1.Draw3D = true;
colorLine1.DragRepaint = true;
//colorLine1.NoLimitDrag = true;
WebChart1.Chart.Export.Template.Save(tmpChart1);
Session.Add("colorLine1", tmpChart1);
}
protected void WebChart1_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g)
{
//output text message to the rendered Chart.
if (clickedX != -1)
{
g.Font.Bold = true;
g.Font.Color = Color.Blue;
g.TextOut(clickedX, clickedY, msgText);
}
}
protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
protected void lnkScroll_Click(object sender, EventArgs e)
{
Steema.TeeChart.Chart chart1 = WebChart1.Chart;
((Steema.TeeChart.Tools.ScrollTool)chart1.Tools[0]).Active = true;
Steema.TeeChart.Chart chart2 = WebChart2.Chart;
((Steema.TeeChart.Tools.ScrollTool)chart2.Tools[0]).Active = true;
}
protected void WebChart2_ClickSeries(object sender, Series s, int valueIndex, EventArgs e)
{
Steema.TeeChart.Chart tChart = ((WebChart)sender).Chart;
clickedX = s.CalcXPos(valueIndex);
clickedY = s.CalcYPos(valueIndex);
msgText = "Series: " + tChart.Series.IndexOf(s).ToString() + "\n\rValue: " + s.YValues[valueIndex].ToString("#0.00");
}
}
}
Re: Click Series Event Not Getting triggerred for WebChart
Posted: Fri Feb 24, 2012 4:39 pm
by 10050769
Hello Venus,
Sorry for the delay. I am working with your project to try to find a solution I answer your asap.
Thank,
Re: Click Series Event Not Getting triggerred for WebChart
Posted: Thu Mar 01, 2012 4:30 pm
by 10050769
Hello Venus,
ScrollTool doesn't allow triggered the other tools and for this reason it doesn't works for you. I have added it in bug list report with number [TW77016062]. We will try to fix it for next maintenance release. On the other hand, can you tell us if you remove your scrollTool, click event works as you expect?
thanks,