protected void Page_Load(object sender, EventArgs e) { WebChartControl chart = new WebChartControl(); chart.EnableViewState = false; ChartTitle title = new ChartTitle(); title.Text = string.Format(Utilities.GetResourceString("Common", "ChartHeader"), "Jmeno", "Start 10.12.2010","Finish 17.12.2010"); title.Font = new System.Drawing.Font("Tahoma", 10); chart.Titles.Add(title); chart.FillStyle.FillMode = FillMode.Solid; Dictionary<int, Series> series = new Dictionary<int, Series>(); Series s0 = new Series("Recommended price", ViewType.StackedBar); s0.ValueScaleType = ScaleType.Numerical; s0.ArgumentScaleType = ScaleType.DateTime; series.Add(0, s0); SetGraphPoint(series[0], "rnd"); Series s1 = new Series("Actual price", ViewType.Line); s1.ValueScaleType = ScaleType.Numerical; s1.ArgumentScaleType = ScaleType.DateTime; series.Add(1, s1); SetGraphPoint(series[1], "fib"); //Series s2 = new Series("Predicted price", ViewType.Bubble); //s2.ValueScaleType = ScaleType.Numerical; //s2.ArgumentScaleType = ScaleType.DateTime; //series.Add(2, s2); //SetGraphPoint(series[2], "byte"); foreach (KeyValuePair<int, Series> serie in series) chart.Series.Add(serie.Value); //chart.SeriesTemplate.ShowInLegend = false; chart.Legend.Direction = LegendDirection.LeftToRight; chart.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Center; chart.Legend.AlignmentVertical = LegendAlignmentVertical.Bottom; DevExpress.XtraCharts.XYDiagram xyDiagram = new XYDiagram(); xyDiagram.AxisY.Title.Font = new System.Drawing.Font("Tahoma", 8); xyDiagram.AxisY.Title.Text = "CZK"; xyDiagram.AxisY.Label.Staggered = false; xyDiagram.AxisY.Title.Visible = true; xyDiagram.AxisY.Range.SideMarginsEnabled = true; xyDiagram.AxisY.Interlaced = true; xyDiagram.AxisX.Title.Font = new System.Drawing.Font("Tahoma", 8); xyDiagram.AxisX.Label.Staggered = true; xyDiagram.AxisX.Range.SideMarginsEnabled = true; xyDiagram.AxisX.Tickmarks.MinorVisible = false; chart.Diagram = xyDiagram; chart.Width = 700; chart.Height = 500; //chart.DataBind(); phMain.Controls.Add(chart); }
private void ChartSettiong_positiondata_realtime() { position_realtime_series = new DevExpress.XtraCharts.Series("위치", ViewType.Line); // position_series[0].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; //시리즈에 라벨 표시 // position_series[1].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; //ChartControl에 Series 추가 chartControl_path.Series.Add(position_realtime_series); chartControl_path.CrosshairEnabled = DefaultBoolean.False; XYDiagram diagram = (XYDiagram)chartControl_path.Diagram; diagram.AxisY.WholeRange.MaxValue = 10; // y축 최대값 diagram.AxisY.WholeRange.MinValue = -1; // y축 최소값 diagram.AxisY.WholeRange.Auto = false; // y축 범위 자동변경 설정 diagram.AxisX.WholeRange.SideMarginsValue = 0; ConstantLine zeroLine = new ConstantLine(); zeroLine.Color = Color.Green; zeroLine.AxisValue = 0; zeroLine.ShowInLegend = false; diagram.AxisY.ConstantLines.Add(zeroLine); // y값 0인 x축 생성 }
private void ChartSettiong_angluardata_result() { // position_series[0] = new DevExpress.XtraCharts.Series("위치", ViewType.Line); angluar_result_series = new DevExpress.XtraCharts.Series("앵글", ViewType.Line); // position_series[0].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; //시리즈에 라벨 표시 // position_series[1].LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; //ChartControl에 Series 추가 chartControl2.Series.Add(angluar_result_series); // chartControl1.Series.Add(position_series[1]); chartControl2.CrosshairEnabled = DefaultBoolean.False; XYDiagram diagram = (XYDiagram)chartControl2.Diagram; diagram.AxisY.WholeRange.MaxValue = 3.14; // y축 최대값 diagram.AxisY.WholeRange.MinValue = -3.14; // y축 최소값 diagram.AxisY.WholeRange.Auto = false; // y축 범위 자동변경 설정 diagram.AxisX.WholeRange.SideMarginsValue = 0; ConstantLine zeroLine = new ConstantLine(); zeroLine.Color = Color.LightYellow; zeroLine.AxisValue = 0; zeroLine.ShowInLegend = false; diagram.AxisY.ConstantLines.Add(zeroLine); // y값 0인 x축 생성 }
public void Update_Voltage_Plot_for_Sensitivity(Sensitvity_Measurement mySensitivity) { chartControl_DATA_Top.Invoke((MethodInvoker) delegate { //Punkte aktualisieren chartControl_DATA_Top.RefreshData(); //Bei bedarf die y-Achse verlängern //Min und Max finden decimal help_min = decimal.MaxValue; decimal help_max = decimal.MinValue; foreach (var messreihe in mySensitivity.Voltage_Values) { foreach (var messpunkt in messreihe) { if (messpunkt.Voltage < help_min) { help_min = messpunkt.Voltage; } if (messpunkt.Voltage > help_max) { help_max = messpunkt.Voltage; } } } XYDiagram test = (XYDiagram)chartControl_DATA_Top.Diagram; test.AxisY.WholeRange.MaxValue = help_max; //Zugelassener Bereich test.AxisY.VisualRange.MaxValue = help_max; //Sichtbarrer Bereich test.AxisY.WholeRange.MinValue = help_min; //Zugelassener Bereich test.AxisY.VisualRange.MinValue = help_min; //Sichtbarrer Bereich }); }
private void LoadYearMonthFPY() { DataTable dt = buTestValue.GetYearMonthFPY(); this.chartControl3.Series.Clear(); Series series1 = new Series("FPY", ViewType.Line); series1.DataSource = dt; series1.ArgumentScaleType = ScaleType.Qualitative; // 以哪个字段进行显示 series1.ArgumentDataMember = "months"; series1.ValueScaleType = ScaleType.Numerical; series1.Label.TextPattern = "{v:0.00%}"; series1.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True; // 柱状图里的柱的取值字段 series1.ValueDataMembers.AddRange(new string[] { "ratio" }); //绑定Series chartControl3.Series.Add(series1); XYDiagram diagram = (XYDiagram)chartControl3.Diagram; diagram.AxisX.GridSpacingAuto = false; diagram.AxisX.GridSpacing = 1; diagram.AxisY.Label.TextPattern = "{v:0.00%}"; }
private void siBOK_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(cBEHorizontal.Text.Trim()) && string.IsNullOrEmpty(cBEvertical.Text.Trim())) { MessageBox.Show("错误信息:\n纵轴的值:是必需的\n横轴的值:是必需的"); } else { chartControl1.Series.Clear(); UpdateSeries(CurrentTable); //Series Series1 = new Series("样方", ViewType.Point); //Series1.DataSource = pTable; //Series1.ArgumentScaleType = ScaleType.Numerical; //Series1.ArgumentDataMember = cBEHorizontal.Text; //Series1.ValueDataMembers[0] = cBEvertical.Text; chartControl1.Series.Add(Series1); Series Series2 = new Series("1:1线", ViewType.Line); ((LineSeriesView)Series2.View).LineStyle.DashStyle = DashStyle.Dot; XYDiagram diagram = (XYDiagram)chartControl1.Diagram; Series2.Points.Add(new SeriesPoint(diagram.AxisX.VisualRange.MinValue, diagram.AxisY.VisualRange.MinValue)); double X = Convert.ToDouble(diagram.AxisX.VisualRange.MaxValue); double Y = Convert.ToDouble(diagram.AxisY.VisualRange.MaxValue); if (X >= Y) { Series2.Points.Add(new SeriesPoint(diagram.AxisX.VisualRange.MaxValue, diagram.AxisX.VisualRange.MaxValue)); } else { Series2.Points.Add(new SeriesPoint(diagram.AxisY.VisualRange.MaxValue, diagram.AxisY.VisualRange.MaxValue)); } chartControl1.Series.Add(Series2); } }
private void Form1_Load(object sender, EventArgs e) { pLinqServerModeSource.Source = SalesProductDataGenerator.GetData(); #region #ControlRowSource // Assign a new instance of ControlRowSource to the chart's DataSource property. chartControl.DataSource = new ControlRowSource() { Control = mainView, ControlRows = ControlRows.Selected }; // Specify chart properties that configures series to display. chartControl.SeriesDataMember = "State"; SeriesBase seriesTemplate = chartControl.SeriesTemplate; seriesTemplate.ArgumentDataMember = "Category"; seriesTemplate.ValueDataMembers.AddRange("Revenue"); // Configure additional chart properties. seriesTemplate.CrosshairLabelPattern = "{S}: {V:C2}"; seriesTemplate.SeriesPointsSorting = SortingMode.Descending; seriesTemplate.SeriesPointsSortingKey = SeriesPointKey.Value_1; seriesTemplate.SummaryFunction = "SUM([Revenue])"; XYDiagram diagram = (XYDiagram)chartControl.Diagram; diagram.AxisY.Label.TextPattern = "{V:C0}"; chartControl.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Right; chartControl.Legend.AlignmentVertical = LegendAlignmentVertical.Top; #endregion #ControlRowSource }
private void gvData_DoubleClick(object sender, EventArgs e) { if (this.gvData.FocusedRowHandle != GridControl.InvalidRowHandle && this.gvData.FocusedColumn != null) { StrategyDataItemInfo info = (StrategyDataItemInfo)this.gvData.FocusedColumn.Tag; if (info.DetailInfo != null) { info = info.DetailInfo; } if (info.Type != DataType.ChartData) { return; } info.Value = gvData.GetFocusedRow(); ChartControl chart = new ChartControl() { Dock = DockStyle.Fill }; chart.BeginInit(); XYDiagram dia = new XYDiagram(); chart.Diagram = dia; StrategyDataVisualiser visualiser = new StrategyDataVisualiser(); XtraTabPage page = new XtraTabPage(); page.Text = info.Name; page.Controls.Add(chart); visualiser.Visualize(info, null, chart); chart.EndInit(); this.tabControl.TabPages.Add(page); } }
/// <summary> /// 바 차트 설정 /// </summary> private void SetBarChart() { chartControl_Bar.Series.Clear(); DataSet ds = GetChartBarInfo(); // DB에서 바 차트 정보 가져오기 DataTable dt = ds.Tables["DATA"]; Series series = new Series("", ViewType.Bar); chartControl_Bar.Series.Add(series); chartControl_Bar.CrosshairEnabled = DefaultBoolean.False; XYDiagram diagram = (XYDiagram)chartControl_Bar.Diagram; diagram.AxisX.Label.TextPattern = "{A: yy-MM-dd}"; // X축 라벨 표시 형식 //diagram.AxisY.WholeRange.MaxValue = 50; // Y축 최대값 //diagram.AxisY.WholeRange.MinValue = 0; // Y축 최소값 diagram.AxisX.WholeRange.MaxValue = 0; diagram.AxisY.WholeRange.Auto = true; // Y축 Min-Max값에 따라 유동적으로 설정 diagram.EnableAxisXScrolling = false; diagram.EnableAxisXZooming = false; diagram.EnableAxisYScrolling = false; diagram.EnableAxisYZooming = false; series.DataSource = dt; series.ArgumentDataMember = dt.Columns[0].ColumnName; series.ValueDataMembers.AddRange(new string[] { dt.Columns[1].ColumnName }); series.LabelsVisibility = DefaultBoolean.True; (series.Label as BarSeriesLabel).Position = BarSeriesLabelPosition.Top; // 라벨 위치 막대그래프 위에 나타나도록 series.Label.Border.Visibility = DefaultBoolean.False; // 라벨 데이터에 테두리 없애기 }
public void AddSeriesPaneToChart(string textFormatString, object[] values, string[] labelStrings, Color color) { object[] array = values; string[] months = labelStrings; Series series = GetSeries(textFormatString, color, array, months); int seriesPosition = chartControl1.Series.Add(series); XYDiagramSeriesViewBase view = (XYDiagramSeriesViewBase)series.View; XYDiagram diag = chartControl1.Diagram as XYDiagram; int axesPosition = diag.SecondaryAxesY.Add(new SecondaryAxisY()); if (seriesPosition > 0) { XYDiagramPane pane = new XYDiagramPane(); pane.SizeMode = PaneSizeMode.UseWeight; diag.Panes.Add(pane); diag.SecondaryAxesY[axesPosition].Alignment = AxisAlignment.Near; diag.SecondaryAxesY[axesPosition].GridLines.Visible = true; view.AxisY = diag.SecondaryAxesY[axesPosition]; view.Pane = pane; } else { diag.SecondaryAxesY[seriesPosition].Visible = false; view.AxisX.Label.Angle = 90; } diag.EnableZooming = true; diag.EnableScrolling = true; chartControl1.Height += 400; }
/// <summary> /// 是否显示折线图 /// </summary> /// <param name="visible"></param> public void ShowLine(bool visible) { this.chartMain.Series[1].Visible = visible; XYDiagram diagram = this.chartMain.Diagram as XYDiagram; diagram.SecondaryAxesY[0].Visibility = visible ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False; }
/// <summary> /// 初始化 /// </summary> private void InitChartData() { Series series1 = new Series("Series1", ViewType.Line); series1.Points.Add(new SeriesPoint(DateTime.Now, 2)); series1.Points.Add(new SeriesPoint(DateTime.Now.AddHours(0.5), 12)); series1.Points.Add(new SeriesPoint(DateTime.Now.AddHours(1), 14)); series1.Points.Add(new SeriesPoint(DateTime.Now.AddHours(1.5), 17)); chartControl1.Series.Add(series1); series1.ArgumentScaleType = ScaleType.DateTime; XYDiagram diagram = (XYDiagram)chartControl1.Diagram; diagram.AxisX.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; diagram.AxisX.Title.Alignment = System.Drawing.StringAlignment.Center; diagram.AxisX.Title.Text = "时间轴"; diagram.AxisX.Title.EnableAntialiasing = DevExpress.Utils.DefaultBoolean.True; diagram.AxisX.Title.Font = new System.Drawing.Font("Tahoma", 14, System.Drawing.FontStyle.Bold); diagram.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True; diagram.AxisY.Title.Alignment = System.Drawing.StringAlignment.Center; diagram.AxisY.Title.Text = "值"; diagram.AxisY.Title.EnableAntialiasing = DevExpress.Utils.DefaultBoolean.True; diagram.AxisY.Title.Font = new System.Drawing.Font("Tahoma", 14, System.Drawing.FontStyle.Bold); ((XYDiagram)chartControl1.Diagram).EnableAxisXScrolling = true; chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False; chartControl1.Titles.Add(new ChartTitle()); chartControl1.Titles[0].Text = "区域变化折线图"; }
public void BuildChart(int countS, int countE, DataTable dt, XRChart xrChart) { //6/25/2014 NS modified for VSPLUS-277 xrChart.Series.Clear(); Series series = null; for (int i = countS; i < countE; i++) { if (series == null) { series = new Series("Server", ViewType.Bar); series.ArgumentDataMember = dt.Columns["Server"].ToString(); series.ArgumentScaleType = ScaleType.Qualitative; series.ValueScaleType = ScaleType.Numerical; } if (series != null) { series.Points.Add(new SeriesPoint(dt.Rows[i]["Server"].ToString(), Convert.ToDouble(dt.Rows[i]["ResponseTime"].ToString()))); xrChart.Series.Add(series); series = null; } } ((XYDiagram)xrChart1.Diagram).PaneLayoutDirection = PaneLayoutDirection.Horizontal; XYDiagram seriesXY = (XYDiagram)xrChart.Diagram; seriesXY.EnableAxisXScrolling = true; seriesXY.EnableAxisYScrolling = true; seriesXY.AxisX.Label.ResolveOverlappingOptions.AllowRotate = false; seriesXY.AxisX.Label.ResolveOverlappingOptions.AllowHide = false; seriesXY.AxisY.Title.Text = "Milliseconds"; seriesXY.AxisY.Title.Visible = true; seriesXY.AxisX.Title.Visible = false; xrChart.DataSource = dt; }
private void xrChart1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { DataTable dt = new DataTable(); dt = VSWebBL.ReportsBL.ReportsBL.Ins.GetTravelerStatsSrv(this.Parameters["ServerName"].Value.ToString(), this.Parameters["TravelerName"].Value.ToString()); xrChart1.SeriesDataMember = "Interval"; xrChart1.SeriesTemplate.ArgumentDataMember = "DateUpdated"; xrChart1.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "OpenTimes" }); xrChart1.SeriesTemplate.View = new SideBySideBarSeriesView(); xrChart1.SeriesTemplate.ChangeView(ViewType.Line); LineSeriesView view = (LineSeriesView)xrChart1.SeriesTemplate.View; view.LineMarkerOptions.Visible = false; xrChart1.Legend.Visible = true; XYDiagram seriesXY = (XYDiagram)xrChart1.Diagram; seriesXY.AxisX.Title.Text = "Time"; seriesXY.AxisX.Title.Visible = true; seriesXY.AxisX.Label.ResolveOverlappingOptions.AllowRotate = true; seriesXY.AxisX.Label.ResolveOverlappingOptions.AllowHide = false; //4/18/2014 NS commented out for VSPLUS-312 //seriesXY.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Minute; seriesXY.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Minute; seriesXY.AxisX.DateTimeOptions.Format = DateTimeFormat.ShortTime; seriesXY.AxisY.Range.AlwaysShowZeroLevel = false; seriesXY.AxisY.Title.Text = "Open Times"; seriesXY.AxisY.Title.Visible = true; if (dt.Rows.Count > 0) { xrChart1.DataSource = dt; } }
private XYDiagramPaneBase CheckAddPanel(StrategyDataItemInfo info) { XYDiagram diagram = (XYDiagram)Chart.Diagram; if (diagram == null) { return(null); } diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false; if (info.PanelName == "Default") { return(diagram.DefaultPane); } XYDiagramPane pane = null; if (diagram.Panes[info.PanelName] != null) { pane = diagram.Panes[info.PanelName]; } IResizeableArray items = GetDataSource(info) as IResizeableArray; if (items != null && !(GetArgumentValue(info, items.GetItem(0)) is DateTime)) { if (info.PanelName == "Default") { } else { SecondaryAxisX axisX = new SecondaryAxisX(); axisX.Name = info.AxisXName; diagram.SecondaryAxesX.Add(axisX); } } if (pane == null || info.Reversed) { SecondaryAxisY axis = new SecondaryAxisY(); axis.Assign(diagram.AxisY); axis.Name = info.AxisYName; axis.Reverse = info.Reversed; diagram.SecondaryAxesY.Add(axis); } if (pane == null) { pane = new XYDiagramPane() { Name = info.PanelName }; diagram.Panes.Add(pane); Legend l = new Legend(); l.Assign(Chart.Legend); l.Name = info.PanelName; l.DockTarget = pane; Chart.Legends.Add(l); } if (!info.PanelVisible) { pane.Visibility = ChartElementVisibility.Hidden; } return(pane); }
private void BarChartForm_Load(object sender, EventArgs e) { titleLabel.Text = "Dane pacjenta " + pesel; hourListBox.Items.Add("wszystkie pomiary"); hourListBox.Items.Add("poranne pomiary"); hourListBox.Items.Add("wieczorne pomiary"); ds = db.getPatiensMeasures(pesel); pulse.View.Color = System.Drawing.Color.Green; XYDiagram diagram = (XYDiagram)pressureChartControl.Diagram; diagram.AxisX.VisualRange.SetMinMaxValues(10, 200); diagram.AxisX.WholeRange.SetMinMaxValues(10, 200); diagram.AxisY.VisualRange.SetMinMaxValues(10, 100); diagram.AxisY.WholeRange.SetMinMaxValues(10, 100); BarSeriesView myView = (BarSeriesView)systolic.View; myView.BarWidth = 8; myView = (BarSeriesView)diastolic.View; myView.BarWidth = 8; diagram = (XYDiagram)pulseChartControl.Diagram; diagram.AxisX.VisualRange.SetMinMaxValues(10, 200); diagram.AxisX.WholeRange.SetMinMaxValues(10, 200); diagram.AxisY.VisualRange.SetMinMaxValues(10, 100); diagram.AxisY.WholeRange.SetMinMaxValues(10, 100); myView = (BarSeriesView)pulse.View; myView.BarWidth = 8; }
/// <summary> /// 创建基准线ConstantLine /// </summary> /// <param name="chart">ChartControl</param> /// <param name="ctAxisValue">基准线数值</param> /// <param name="ctLegendText">基准线图例文字</param> /// <param name="ctTitle">基准线文字</param> /// <param name="ctTitleColor">基准线字体颜色</param> /// <param name="ctLineColor">基准线颜色</param> /// <param name="ctLineStyle">基准线样式</param> public static void CreateConstantLine(this ChartControl chart, int ctAxisValue, string ctLegendText, string ctTitle, Color ctTitleColor, Color ctLineColor, DashStyle ctLineStyle) { if (chart.Diagram is XYDiagram) { XYDiagram _diagram = (XYDiagram)chart.Diagram; if (_diagram != null) { ConstantLine _ctLine = new ConstantLine(); _ctLine.AxisValue = ctAxisValue; _ctLine.Visible = true; _ctLine.ShowInLegend = true; _ctLine.LegendText = ctLegendText; _ctLine.ShowBehind = false; _ctLine.Title.Visible = true; _ctLine.Title.Text = ctTitle; _ctLine.Title.TextColor = ctTitleColor; _ctLine.Title.Antialiasing = false; _ctLine.Title.Font = new Font("Tahoma", 14, FontStyle.Bold); _ctLine.Title.ShowBelowLine = true; _ctLine.Title.Alignment = ConstantLineTitleAlignment.Far; _ctLine.Color = ctLineColor; _ctLine.LineStyle.DashStyle = ctLineStyle; _ctLine.LineStyle.Thickness = 2; _diagram.AxisY.ConstantLines.Add(_ctLine); } } }
private void Form1_Load(object sender, EventArgs e) { // Get several required objects. XYDiagram diagram = chart.Diagram as XYDiagram; if (diagram == null) { return; } FinancialSeriesViewBase view = FinancialSeries.View as FinancialSeriesViewBase; if (view == null) { return; } Indicator macd = view.Indicators.GetElementByName("MACD") as Indicator; #region #AddAdditionalLegend // Create a new instance of Legend. Legend macdLegend = new Legend(); chart.Legends.Add(macdLegend); // Position it. macdLegend.DockTarget = diagram.Panes.GetPaneByName("macdPane"); macdLegend.AlignmentHorizontal = LegendAlignmentHorizontal.Left; macdLegend.AlignmentVertical = LegendAlignmentVertical.Top; // Assign the data displayed in legend. macd.Legend = macdLegend; #endregion #AddAdditionalLegend }
private void bsPanes_GetItemData(object sender, EventArgs e) { if (this.bsPanes.ItemLinks.Count != 0) { return; } XYDiagram dg = (XYDiagram)this.chartControl.Diagram; if (dg == null) { return; } foreach (XYDiagramPane item in dg.Panes) { BarCheckItem ch = new BarCheckItem(this.barManager1) { Caption = item.Name, Checked = item.Visibility == ChartElementVisibility.Visible }; ch.AllowStubGlyph = DefaultBoolean.False; ch.CloseSubMenuOnClick = false; ch.Tag = item; ch.CheckedChanged += OnPaneCheckedChanged; this.bsPanes.ItemLinks.Add(ch); } }
private void Form1_Load(object sender, EventArgs e) { XYDiagram diagram = (XYDiagram)chartControl1.Diagram; // Define the visual range for the primary X-axis. diagram.AxisX.VisualRange.MinValue = 3; diagram.AxisX.VisualRange.MaxValue = 6; // Define the visual range for the secondary X-axis. diagram.SecondaryAxesX[0].VisualRange.MinValue = "A"; diagram.SecondaryAxesX[0].VisualRange.MaxValue = "G"; // Enable the X-axis scrolling at the diagram's level. // By default, it then becomes enabled at the panes' level, as well. diagram.EnableAxisXScrolling = true; // Define the whole range for the primary X-axis. diagram.AxisX.WholeRange.MinValue = 2; diagram.AxisX.WholeRange.MaxValue = 7; // Define the whole range for the secondary X-axis. diagram.SecondaryAxesX[0].WholeRange.MinValue = "A"; diagram.SecondaryAxesX[0].WholeRange.MaxValue = "H"; // Disable the side margins. diagram.AxisX.WholeRange.AutoSideMargins = false; }
/// <summary> /// 根据combox所选字段名,重新生成图表 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void comboBoxEdit1_SelectedIndexChanged(object sender, EventArgs e) { //清除图表数据,重新载入数据 for (int i = 0; i < StatisticsChart_chart2.Series.Count; i++) { StatisticsChart_chart2.Series.RemoveAt(i); } Series series = new Series("", ViewType.Bar); for (int i = 0; i < gridview.RowCount; i++) { series.Points.Add(new SeriesPoint(gridview.GetRowCellValue(i, "*FID"), gridview.GetRowCellValue(i, comboBoxEdit1.Text))); } StatisticsChart_chart2.Series.Add(series); //生成X坐标轴名称 XYDiagram diagram = (XYDiagram)StatisticsChart_chart2.Diagram; diagram.AxisX.Title.Visible = true; diagram.AxisX.Title.Alignment = StringAlignment.Center; diagram.AxisX.Title.Text = "*FID"; //生成Y坐标轴名称 diagram.AxisY.Title.Visible = true; diagram.AxisY.Title.Alignment = StringAlignment.Center; diagram.AxisY.Title.Text = comboBoxEdit1.SelectedText; }
private void ChildFormBalanceSheet_Load(object sender, EventArgs e) { financialStatementModelBindingSource.DataSource = FinancialStatementDao.GetFinancialStatements(); diagram = (XYDiagram)BalanceChart.Diagram; BalanceChart.Animate(); }
Annotation GetHoveredAnnotation(Point mouseLocation) { foreach (Annotation annotation in Chart.AnnotationRepository) { PaneAnchorPoint anchorPoint = (PaneAnchorPoint)annotation.AnchorPoint; XYDiagram diagram = ((XYDiagram)Chart.Diagram); DateTime argument = (DateTime)anchorPoint.AxisXCoordinate.AxisValue; if ((DateTime)diagram.AxisX.VisualRange.MaxValue < argument || (DateTime)diagram.AxisX.VisualRange.MinValue > argument) { continue; } ControlCoordinates coords = diagram.DiagramToPoint((DateTime)anchorPoint.AxisXCoordinate.AxisValue, (double)anchorPoint.AxisYCoordinate.AxisValue, anchorPoint.AxisXCoordinate.Axis, anchorPoint.AxisYCoordinate.Axis, anchorPoint.Pane); if (coords.Visibility == ControlCoordinatesVisibility.Visible) { RelativePosition position = (RelativePosition)annotation.ShapePosition; Point center = new Point((int)(coords.Point.X + Math.Cos(position.Angle / 180 * Math.PI) * position.ConnectorLength), (int)(coords.Point.Y - Math.Sin(position.Angle / 180 * Math.PI) * position.ConnectorLength)); int diffX = Math.Abs(center.X - mouseLocation.X); int diffY = Math.Abs(center.Y - mouseLocation.Y); if (diffX <= annotation.Width / 2 && diffY <= annotation.Height / 2) { return(annotation); } } } return(null); }
private void SetDiagramTimeRange(XYDiagram diagram, int diff) { try { if (diff != 0) { DateTime dt1 = DateTime.Now.AddMinutes(diff); DateTime dt2 = DateTime.Now.AddMinutes(-1 * diff); maskedTextBox1.Text = dt1.Year.ToString("D4") + "년" + dt1.Month.ToString("D2") + "월" + dt1.Day.ToString("D2") + "일 " + dt1.Hour.ToString("D2") + "시" + dt1.Minute.ToString("D2") + "분"; maskedTextBox2.Text = dt2.Year.ToString("D4") + "년" + dt2.Month.ToString("D2") + "월" + dt2.Day.ToString("D2") + "일 " + dt2.Hour.ToString("D2") + "시" + dt2.Minute.ToString("D2") + "분"; } DateTime t_Datetime_Maxvalue = DateTime.Parse(maskedTextBox1.Text.Trim()); diagram.AxisX.VisualRange.MaxValue = t_Datetime_Maxvalue; diagram.AxisX.WholeRange.MaxValue = t_Datetime_Maxvalue; DateTime t_Datetime_Minvalue = DateTime.Parse(maskedTextBox2.Text.Trim()); diagram.AxisX.VisualRange.MinValue = t_Datetime_Minvalue; diagram.AxisX.WholeRange.MinValue = t_Datetime_Minvalue; } catch (Exception ex) { Console.WriteLine(ex.Message); } }
protected virtual void AddYAxes(ChartData <TX, TY> chartData, XYDiagram diagram, bool showPaneCaptioninAxisCaption = true) { diagram.SecondaryAxesY.Clear(); if (!chartData.Panes.Any()) { return; } //only one pane if (chartData.Panes.Count == 1) { diagram.AxisY.Visibility = DefaultBoolean.True; diagram.AxisY.GridLines.Visible = true; initializeAxis(diagram.AxisY, chartData.Panes.First().Axis); } else { foreach (var paneData in chartData.Panes) { var yAxis = new SecondaryAxisY(paneData.Id); initializeAxis(yAxis, paneData.Axis); diagram.SecondaryAxesY.Add(yAxis); } purgeMultipleSameAxisTitles(diagram); diagram.AxisY.Visibility = DefaultBoolean.False; diagram.AxisY.GridLines.Visible = false; } }
private void checkBox5_CheckedChanged(object sender, EventArgs e) { CheckBox a = (CheckBox)sender; XYDiagram diagram = (XYDiagram)chartControl1.Diagram; XYDiagram diagram1 = (XYDiagram)chartControl2.Diagram; XYDiagram diagram2 = (XYDiagram)chartControl3.Diagram; if (a.Checked) { diagram.AxisX.WholeRange.Auto = true; diagram.AxisX.VisualRange.Auto = true; diagram1.AxisX.WholeRange.Auto = true; diagram1.AxisX.VisualRange.Auto = true; diagram2.AxisX.WholeRange.Auto = true; diagram2.AxisX.VisualRange.Auto = true; } else { diagram.AxisX.WholeRange.Auto = false; diagram.AxisX.VisualRange.Auto = false; diagram1.AxisX.WholeRange.Auto = false; diagram1.AxisX.VisualRange.Auto = false; diagram2.AxisX.WholeRange.Auto = false; diagram2.AxisX.VisualRange.Auto = false; } }
private void DrawBars() { this.chartControl1.Series.Clear(); foreach (string _yfield in AxisYFields) { Series _se = new DevExpress.XtraCharts.Series(); _se.PointOptionsTypeName = "PointOptions"; _se.PointOptions.ValueNumericOptions.Format = DevExpress.XtraCharts.NumericFormat.Number; _se.PointOptions.ValueNumericOptions.Precision = DataPrecision; _se.ValueDataMembers.Clear(); _se.DataSource = chartData; _se.ArgumentDataMember = AxisXField; _se.ValueDataMembers.AddRange(new string[] { _yfield }); _se.LegendText = AxisYTitle[_yfield]; this.chartControl1.Series.Add(_se); } int _rowCount = chartData.Rows.Count; if (_rowCount > 4 && _rowCount <= 8) { XYDiagram _xyDiagram = this.chartControl1.Diagram as XYDiagram; _xyDiagram.AxisX.Label.Staggered = true; } if (_rowCount > 8) { XYDiagram _xyDiagram = this.chartControl1.Diagram as XYDiagram; _xyDiagram.AxisX.Label.Staggered = false; _xyDiagram.AxisX.Label.Angle = 45; } }
public TrendViewer() { InitializeComponent(); XYDiagram diagram = (XYDiagram)chartControl1.Diagram; XYDiagram diagram1 = (XYDiagram)chartControl2.Diagram; XYDiagram diagram2 = (XYDiagram)chartControl3.Diagram; diagram.AxisX.Label.TextPattern = "{A: yy/MM/dd hh:mm}"; diagram1.AxisX.Label.TextPattern = "{A: yy/MM/dd hh:mm}"; diagram2.AxisX.Label.TextPattern = "{A: yy/MM/dd hh:mm}"; diagram.AxisX.DateTimeScaleOptions.ScaleMode = ScaleMode.Continuous; diagram1.AxisX.DateTimeScaleOptions.ScaleMode = ScaleMode.Continuous; diagram2.AxisX.DateTimeScaleOptions.ScaleMode = ScaleMode.Continuous; sqlDataSource1.Fill(); timer1.Interval = 1000; // 1초 timer1.Tick += new EventHandler(timer1_Tick); timer1.Start(); // This line of code is generated by Data Source Configuration Wizard // Fill a SqlDataSource }
public void drawLine(double[] ArrVal, System.Int32[] ArrFreq, int valueCount) { maxValue = ArrVal.Max(); minValue = ArrVal.Min(); this.valueCount = valueCount; chartControl1.Series[0].Points.RemoveRange(0, chartControl1.Series[0].Points.Count); XYDiagram diagram = (XYDiagram)chartControl1.Diagram; WholeRange range = diagram.AxisX.WholeRange; range.SetMinMaxValues(0, maxValue); chartControl1.Refresh(); for (int i = panelControl9.Controls.Count; i > 0; i--) { panelControl9.Controls.RemoveAt(i - 1); } if (ArrFreq.Length == 0) { XtraMessageBox.Show("当前属性无法自定义分级,请换一个"); return; } #region 添加点值 for (int i = 0; i < ArrVal.Length; i++) { SeriesPoint point = new SeriesPoint(); point.Argument = ArrVal[i].ToString(); double[] value = new double[1]; value[0] = Convert.ToDouble(ArrFreq[i]); point.Values = value; chartControl1.Series[0].Points.Add(point); } drawConstantline(); #endregion }
private void chartControl1_MouseMove(object sender, MouseEventArgs e) { if (mouseDown) { if (curruentConstantLine != null) { //this.Cursor = System.Windows.Forms.Cursors.VSplit; XYDiagram diagram = (XYDiagram)chartControl1.Diagram; DiagramCoordinates coordinates = diagram.PointToDiagram(e.Location); if (coordinates.NumericalArgument >= minValue) { curruentConstantLine.AxisValue = coordinates.NumericalArgument; curruentConstantLine.Name = string.Format("{0:############0.#######}", coordinates.NumericalArgument); foreach (var tL in textAndLine) { tL.textEdit.Text = tL.constantLine.Name; } } } } else { ChartHitInfo hitinfo = chartControl1.CalcHitInfo(e.X, e.Y); if (hitinfo.ConstantLine != null) { this.Cursor = System.Windows.Forms.Cursors.VSplit; } } }
public static void InitChartControl(this ChartControl chartControl, DateTime dtFromDt, DateTime dtToDt) { XYDiagram diagram = (XYDiagram)chartControl.Diagram; int yearVal = Convert.ToInt32(dtFromDt.ToString("yyyy")); int monthVal = Convert.ToInt32(dtFromDt.ToString("MM")); int dayVal = Convert.ToInt32(dtFromDt.ToString("dd")); int toYearVal = Convert.ToInt32(dtToDt.ToString("yyyy")); int toMonthVal = Convert.ToInt32(dtToDt.ToString("MM")); int toDayVal = Convert.ToInt32(dtToDt.ToString("dd")); diagram.AxisX.Label.TextPattern = "{A:MM-dd HH:mm}"; diagram.AxisX.DateTimeScaleOptions.MeasureUnit = DevExpress.XtraCharts.DateTimeMeasureUnit.Minute; diagram.AxisX.DateTimeScaleOptions.GridAlignment = DevExpress.XtraCharts.DateTimeGridAlignment.Hour; diagram.AxisX.WholeRange.SetMinMaxValues(new DateTime(yearVal, monthVal, dayVal, 0, 0, 0), new DateTime(toYearVal, toMonthVal, toDayVal, 23, 59, 0)); diagram.AxisX.VisualRange.SetMinMaxValues(new DateTime(yearVal, monthVal, dayVal, 0, 0, 0), new DateTime(yearVal, monthVal, dayVal, 23, 59, 0)); diagram.AxisX.WholeRange.SideMarginsValue = 20; diagram.AxisX.VisualRange.SideMarginsValue = 20; //chartControl.Legend.AlignmentHorizontal = DevExpress.XtraCharts.LegendAlignmentHorizontal.Left; //chartControl.Legend.AlignmentVertical = DevExpress.XtraCharts.LegendAlignmentVertical.TopOutside; //chartControl.Legend.Direction = DevExpress.XtraCharts.LegendDirection.LeftToRight; // https://docs.devexpress.com/CoreLibraries/DevExpress.XtraCharts.Legend.MarkerMode //chartControl.Legend.MarkerMode = LegendMarkerMode.CheckBoxAndMarker; }
private void InitializeComponent() { this.components = new Container(); XYDiagram diagram = new XYDiagram(); Series series = new Series(); LineSeriesView view = new LineSeriesView(); LineSeriesView view2 = new LineSeriesView(); this.gpgChart = new GPGChartControl(this.components); this.btnCalculate = new GPGButton(); this.tbMinutes = new GPGTextBox(); this.gpgLabel2 = new GPGLabel(); this.lStatus = new GPGLabel(); this.deDate = new DateEdit(); ((ISupportInitialize) this.gpgChart).BeginInit(); ((ISupportInitialize) diagram).BeginInit(); ((ISupportInitialize) series).BeginInit(); ((ISupportInitialize) view).BeginInit(); ((ISupportInitialize) view2).BeginInit(); this.tbMinutes.Properties.BeginInit(); this.deDate.Properties.BeginInit(); base.SuspendLayout(); base.ttDefault.DefaultController.AutoPopDelay = 0x3e8; this.gpgChart.Anchor = AnchorStyles.Right | AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Top; this.gpgChart.AppearanceName = "Northern Lights"; diagram.AxisX.Tickmarks.MinorVisible = false; diagram.AxisX.GridLines.Visible = true; diagram.AxisX.GridSpacingAuto = false; diagram.AxisX.Label.Angle = 90; diagram.AxisX.Label.Visible = false; diagram.AxisX.Title.Visible = true; diagram.AxisX.Title.Text = "User Connections"; diagram.AxisX.GridSpacing = 0.01; diagram.AxisX.MinorCount = 1; diagram.AxisX.Interlaced = true; this.gpgChart.Diagram = diagram; this.gpgChart.Legend.Visible = false; this.gpgChart.Location = new Point(0x13, 0x65); this.gpgChart.Name = "gpgChart"; series.PointOptionsTypeName = "PointOptions"; series.View = view; series.Name = "Logins"; this.gpgChart.Series.AddRange(new Series[] { series }); this.gpgChart.SeriesTemplate.PointOptionsTypeName = "PointOptions"; this.gpgChart.SeriesTemplate.View = view2; this.gpgChart.Size = new Size(0x256, 0x120); this.gpgChart.TabIndex = 7; this.btnCalculate.Anchor = AnchorStyles.Right | AnchorStyles.Bottom; this.btnCalculate.Location = new Point(0x1ee, 0x18b); this.btnCalculate.LookAndFeel.SkinName = "London Liquid Sky"; this.btnCalculate.LookAndFeel.UseDefaultLookAndFeel = false; this.btnCalculate.Name = "btnCalculate"; this.btnCalculate.Size = new Size(0x7f, 0x17); this.btnCalculate.TabIndex = 8; this.btnCalculate.Text = "<LOC>Calculate Stats"; this.btnCalculate.UseVisualStyleBackColor = false; this.btnCalculate.Click += new EventHandler(this.btnCalculate_Click); this.tbMinutes.EditValue = "60"; this.tbMinutes.Location = new Point(0x6c, 0x4b); this.tbMinutes.Name = "tbMinutes"; this.tbMinutes.Properties.Appearance.BackColor = Color.Black; this.tbMinutes.Properties.Appearance.BorderColor = Color.FromArgb(0x52, 0x83, 190); this.tbMinutes.Properties.Appearance.ForeColor = Color.White; this.tbMinutes.Properties.Appearance.Options.UseBackColor = true; this.tbMinutes.Properties.Appearance.Options.UseBorderColor = true; this.tbMinutes.Properties.Appearance.Options.UseForeColor = true; this.tbMinutes.Properties.AppearanceFocused.BackColor = Color.FromArgb(0x10, 0x21, 0x4f); this.tbMinutes.Properties.AppearanceFocused.BackColor2 = Color.FromArgb(0, 0, 0); this.tbMinutes.Properties.AppearanceFocused.BorderColor = Color.FromArgb(0xbb, 0xc9, 0xe2); this.tbMinutes.Properties.AppearanceFocused.GradientMode = LinearGradientMode.ForwardDiagonal; this.tbMinutes.Properties.AppearanceFocused.Options.UseBackColor = true; this.tbMinutes.Properties.AppearanceFocused.Options.UseBorderColor = true; this.tbMinutes.Properties.BorderStyle = BorderStyles.Simple; this.tbMinutes.Properties.DisplayFormat.FormatType = FormatType.Numeric; this.tbMinutes.Properties.EditFormat.FormatType = FormatType.Numeric; this.tbMinutes.Properties.LookAndFeel.SkinName = "London Liquid Sky"; this.tbMinutes.Properties.LookAndFeel.UseDefaultLookAndFeel = false; this.tbMinutes.Size = new Size(100, 20); this.tbMinutes.TabIndex = 10; this.gpgLabel2.AutoSize = true; this.gpgLabel2.AutoStyle = true; this.gpgLabel2.Font = new Font("Arial", 9.75f); this.gpgLabel2.ForeColor = Color.White; this.gpgLabel2.IgnoreMouseWheel = false; this.gpgLabel2.IsStyled = false; this.gpgLabel2.Location = new Point(20, 0x4c); this.gpgLabel2.Name = "gpgLabel2"; this.gpgLabel2.Size = new Size(0x52, 0x10); this.gpgLabel2.TabIndex = 12; this.gpgLabel2.Text = "Minute Ticks"; this.gpgLabel2.TextStyle = TextStyles.Default; this.lStatus.AutoSize = true; this.lStatus.AutoStyle = true; this.lStatus.Font = new Font("Arial", 9.75f); this.lStatus.ForeColor = Color.White; this.lStatus.IgnoreMouseWheel = false; this.lStatus.IsStyled = false; this.lStatus.Location = new Point(0x16b, 0x4f); this.lStatus.Name = "lStatus"; this.lStatus.Size = new Size(0x43, 0x10); this.lStatus.TabIndex = 13; this.lStatus.Text = "gpgLabel1"; this.lStatus.TextStyle = TextStyles.Default; this.lStatus.Visible = false; this.deDate.EditValue = null; this.deDate.Location = new Point(0xd6, 0x4b); this.deDate.Name = "deDate"; this.deDate.Properties.Appearance.BackColor = Color.Black; this.deDate.Properties.Appearance.ForeColor = Color.White; this.deDate.Properties.Appearance.Options.UseBackColor = true; this.deDate.Properties.Appearance.Options.UseForeColor = true; this.deDate.Properties.BorderStyle = BorderStyles.Simple; this.deDate.Properties.Buttons.AddRange(new EditorButton[] { new EditorButton(ButtonPredefines.Combo) }); this.deDate.Size = new Size(0x8f, 20); this.deDate.TabIndex = 14; base.AutoScaleDimensions = new SizeF(7f, 13f); base.AutoScaleMode = AutoScaleMode.Font; base.ClientSize = new Size(640, 480); base.Controls.Add(this.deDate); base.Controls.Add(this.lStatus); base.Controls.Add(this.gpgLabel2); base.Controls.Add(this.tbMinutes); base.Controls.Add(this.btnCalculate); base.Controls.Add(this.gpgChart); base.Location = new Point(0, 0); base.Name = "DlgConnectionsGraph"; this.Text = "DlgConnectionsGraph"; base.Controls.SetChildIndex(this.gpgChart, 0); base.Controls.SetChildIndex(this.btnCalculate, 0); base.Controls.SetChildIndex(this.tbMinutes, 0); base.Controls.SetChildIndex(this.gpgLabel2, 0); base.Controls.SetChildIndex(this.lStatus, 0); base.Controls.SetChildIndex(this.deDate, 0); ((ISupportInitialize) diagram).EndInit(); ((ISupportInitialize) view).EndInit(); ((ISupportInitialize) series).EndInit(); ((ISupportInitialize) view2).EndInit(); ((ISupportInitialize) this.gpgChart).EndInit(); this.tbMinutes.Properties.EndInit(); this.deDate.Properties.EndInit(); base.ResumeLayout(false); base.PerformLayout(); }
private void botonVerGrafica_Click(object sender, EventArgs e) { chartControl1.Series.Clear(); var grafica = new EmpeñosDC(new clsConeccionDB().StringConn()).Cajas.Where( c => c.FechaCajaAbierto.Date >= dtpFechaInicial.DateTime.Date && c.FechaCajaAbierto.Date <= dtpFechaFinal.DateTime.Date); switch (cboTipoDato.SelectedIndex) { case 0: { Series empeño = new Series("Empeños", ViewType.Line); switch (cboTipoMuestra.SelectedIndex) { case 0: foreach (var caja in grafica) { empeño.Points.Add(new SeriesPoint(caja.FechaCajaAbierto.ToString("dd-MMM-yy"), caja.TotalEmpenios)); } chartControl1.Series.Add(empeño); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "dd-MMM-yy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 1: var empMes = from em in grafica group em by new { Column1 =em.FechaCajaAbierto.Month } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.TotalEmpenios) }; foreach (var caja in empMes) { empeño.Points.Add(new SeriesPoint(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(caja.Mes), caja.Total)); } chartControl1.Series.Add(empeño); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "MMM"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 2: var empAnio = from em in grafica group em by new { Column1 =em.FechaCajaAbierto.Year } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.TotalEmpenios) }; foreach (var caja in empAnio) { empeño.Points.Add(new SeriesPoint(caja.Mes, caja.Total)); } chartControl1.Series.Add(empeño); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "yyyy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; } } break; case 1: { Series intSeries = new Series("Intereses", ViewType.Line); switch (cboTipoMuestra.SelectedIndex) { case 0: foreach (var caja in grafica) { intSeries.Points.Add(new SeriesPoint(caja.FechaCajaAbierto.ToString("dd-MMM-yy"), caja.InteresCobrados)); } chartControl1.Series.Add(intSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "dd-MMM-yy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 1: var empMes = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Month } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.InteresCobrados) }; foreach (var caja in empMes) { intSeries.Points.Add(new SeriesPoint(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(caja.Mes), caja.Total)); } chartControl1.Series.Add(intSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "MMM"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 2: var empAnio = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Year } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.InteresCobrados) }; foreach (var caja in empAnio) { intSeries.Points.Add(new SeriesPoint(caja.Mes, caja.Total)); } chartControl1.Series.Add(intSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "yyyy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; } } break; case 2: { Series desSeries = new Series("Desempeños", ViewType.Line); switch (cboTipoMuestra.SelectedIndex) { case 0: foreach (var caja in grafica) { desSeries.Points.Add(new SeriesPoint(caja.FechaCajaAbierto.ToString("dd-MMM-yy"), caja.Desempenios)); } chartControl1.Series.Add(desSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "dd-MMM-yy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 1: var empMes = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Month } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.Desempenios) }; foreach (var caja in empMes) { desSeries.Points.Add(new SeriesPoint(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(caja.Mes), caja.Total)); } chartControl1.Series.Add(desSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "MMM"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 2: var empAnio = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Year } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.Desempenios) }; foreach (var caja in empAnio) { desSeries.Points.Add(new SeriesPoint(caja.Mes, caja.Total)); } chartControl1.Series.Add(desSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "yyyy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; } } break; case 3: { Series comSeries = new Series("Compras", ViewType.Line); switch (cboTipoMuestra.SelectedIndex) { case 0: foreach (var caja in grafica) { comSeries.Points.Add(new SeriesPoint(caja.FechaCajaAbierto.ToString("dd-MMM-yy"), caja.TotalCompras)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "dd-MMM-yy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 1: var empMes = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Month } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.TotalCompras) }; foreach (var caja in empMes) { comSeries.Points.Add(new SeriesPoint(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(caja.Mes), caja.Total)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "MMM"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 2: var empAnio = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Year } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.TotalCompras) }; foreach (var caja in empAnio) { comSeries.Points.Add(new SeriesPoint(caja.Mes, caja.Total)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "yyyy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; } } break; case 4: { Series comSeries = new Series("Ventas", ViewType.Line); switch (cboTipoMuestra.SelectedIndex) { case 0: foreach (var caja in grafica) { comSeries.Points.Add(new SeriesPoint(caja.FechaCajaAbierto.ToString("dd-MMM-yy"), caja.TotalVentas)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "dd-MMM-yy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 1: var empMes = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Month } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.TotalVentas) }; foreach (var caja in empMes) { comSeries.Points.Add(new SeriesPoint(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(caja.Mes), caja.Total)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "MMM"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 2: var empAnio = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Year } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.TotalVentas) }; foreach (var caja in empAnio) { comSeries.Points.Add(new SeriesPoint(caja.Mes, caja.Total)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "yyyy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; } } break; case 5: { Series comSeries = new Series("Pagos a Venta", ViewType.Line); switch (cboTipoMuestra.SelectedIndex) { case 0: foreach (var caja in grafica) { comSeries.Points.Add(new SeriesPoint(caja.FechaCajaAbierto.ToString("dd-MMM-yy"), caja.TotalPagosVentas)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "dd-MMM-yy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 1: var empMes = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Month } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.TotalPagosVentas) }; foreach (var caja in empMes) { comSeries.Points.Add(new SeriesPoint(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(caja.Mes), caja.Total)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "MMM"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 2: var empAnio = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Year } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.TotalPagosVentas) }; foreach (var caja in empAnio) { comSeries.Points.Add(new SeriesPoint(caja.Mes, caja.Total)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "yyyy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; } } break; case 6: { Series comSeries = new Series("Financiamientos", ViewType.Line); switch (cboTipoMuestra.SelectedIndex) { case 0: foreach (var caja in grafica) { comSeries.Points.Add(new SeriesPoint(caja.FechaCajaAbierto.ToString("dd-MMM-yy"), caja.TotalFinanciamientos)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "dd-MMM-yy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 1: var empMes = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Month } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.TotalFinanciamientos) }; foreach (var caja in empMes) { comSeries.Points.Add(new SeriesPoint(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(caja.Mes), caja.Total)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "MMM"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 2: var empAnio = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Year } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.TotalFinanciamientos) }; foreach (var caja in empAnio) { comSeries.Points.Add(new SeriesPoint(caja.Mes, caja.Total)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "yyyy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; } } break; case 7: { Series comSeries = new Series("Pagos a Financiamientos", ViewType.Line); switch (cboTipoMuestra.SelectedIndex) { case 0: foreach (var caja in grafica) { comSeries.Points.Add(new SeriesPoint(caja.FechaCajaAbierto.ToString("dd-MMM-yy"), caja.TotalPagosFinanciamiento)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "dd-MMM-yy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 1: var empMes = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Month } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.TotalPagosFinanciamiento) }; foreach (var caja in empMes) { comSeries.Points.Add(new SeriesPoint(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(caja.Mes), caja.Total)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "MMM"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; case 2: var empAnio = from em in grafica group em by new { Column1 = em.FechaCajaAbierto.Year } into g select new { Mes = g.Key.Column1, Total = (Decimal?)g.Sum(em => em.TotalPagosFinanciamiento) }; foreach (var caja in empAnio) { comSeries.Points.Add(new SeriesPoint(caja.Mes, caja.Total)); } chartControl1.Series.Add(comSeries); _diagram = (XYDiagram)chartControl1.Diagram; _diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; _diagram.AxisX.DateTimeOptions.FormatString = "yyyy"; _diagram.AxisY.NumericOptions.Format = NumericFormat.Currency; _diagram.AxisY.NumericOptions.Precision = 1; break; } } break; } }
void DrawChart(DataTable data, DateTime from, DateTime to, IntervalType interval, ValueRepresentation representation, bool ajax) { List<Interval> _intervals = new List<Interval>(); if (interval == IntervalType.Day || interval == IntervalType.Week) { // Day by day or week by week for (int i = 0; i < (to.Subtract(from).TotalDays / (int)interval); i++) { _intervals.Add(new Interval(from.AddDays((i * (int)interval) + 1 - 1), from.AddDays((i * (int)interval) + (int)interval + 1 - 1))); } } if (interval == IntervalType.Month) { for (int i = 0; i < to.Month - from.Month + ((to.Year - from.Year) * 12) + 1; i++) { _intervals.Add(new Interval(new DateTime(from.Year, from.Month, 1).AddMonths(i), new DateTime(from.Year, from.Month, 1).AddMonths(i + 1).AddDays(-1))); } } if (interval == IntervalType.Year) { for (int i = 0; i < to.Year - from.Year + 1; i++) { _intervals.Add(new Interval(new DateTime(from.Year, from.Month, 1).AddYears(i), new DateTime(from.Year, from.Month, 1).AddYears(i + 1).AddDays(-1))); } } //foreach (Interval ii in _intervals) //{ // Response.Write(ii.Start); // Response.Write(" - "); // Response.Write(ii.End); // Response.Write("<br>"); //} // Draw chart here item by item in _intervals WebChartControl chart = new WebChartControl(); if (!ajax) { chart.EnableViewState = false; ChartTitle title = new ChartTitle(); title.Text = "Graf dle " + ddlYGroupBy.SelectedItem.Text.ToLower() + ":"; title.Font = new System.Drawing.Font("Tahoma", 10); chart.Titles.Add(title); chart.FillStyle.FillMode = FillMode.Solid; } Dictionary<int, Series> series = new Dictionary<int, Series>(); List<bool> seriesVisibilities = new List<bool>(); using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CanonConnectionStringMain"].ConnectionString)) { conn.Open(); List<string> seriesNames = new List<string>(); List<string> seriesCriteria = new List<string>(); int k = 0; Culture = "cs-CZ"; // Create series using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; StringBuilder text = new StringBuilder(""); #warning extract to function if (ddlYFilterType.SelectedIndex > 0) { if (_filerYValues.Count > 0) { text.Append(" AND ("); // Y Filter int i = 0; foreach (string s in _filerYValues) { text.Append(ddlYFilterType.SelectedValue); text.Append(" = '"); text.Append(s); text.Append("' "); if (i < _filerYValues.Count - 1) { text.Append("OR "); } i++; } text.Append(") "); } } string top = ""; if (chbTop.Checked) { int tp = Convert.ToInt32(txtTop.Text); if (!ajax) { tp += 1; } top = "TOP " + tp; } cmd.CommandText = string.Format("SELECT {2} {0}, {0} AS Value FROM PivotTable WHERE DateSale >= @Start AND DateSale < @End {1} GROUP BY {0} ORDER BY Sum(CAST(replace(TurnoverEUR, ',', '.') as Decimal)) DESC", ddlYGroupBy.SelectedValue, text, top); cmd.Parameters.Add(new SqlParameter("@Start", SqlDbType.DateTime) { Value = _intervals[0].Start }); cmd.Parameters.Add(new SqlParameter("@End", SqlDbType.DateTime) { Value = _intervals[_intervals.Count - 1].End }); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { if (ddlYGroupBy.SelectedValue == "ReselerGroupJoined") { seriesNames.Add(reader[1].ToString().Trim() == "" ? "NO-NAME" : reader[1].ToString()); } else { seriesNames.Add(reader[1].ToString().Trim() == "" ? "(neuvedeno)" : reader[1].ToString()); } if (!ajax) { Series s; if (rblValueDisplayMode.SelectedValue == "2" || ddlXValueType.SelectedValue == "Data") { s = new Series(reader[1].ToString(), ViewType.StackedBar); } else { s = new Series(reader[1].ToString(), ViewType.Line); } s.ValueScaleType = ScaleType.Numerical; if (ddlXValueType.SelectedValue == "Time") { s.ArgumentScaleType = ScaleType.DateTime; } if (ddlXValueType.SelectedValue == "Data") { s.ArgumentScaleType = ScaleType.Qualitative; } if (ddlYValueType.SelectedValue == "4") { if (rblValueDisplayMode.SelectedValue != "2") { s.PointOptions.ValueNumericOptions.Format = NumericFormat.Currency; } if (rblValueDisplayMode.SelectedValue == "2") { s.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent; } } //s.PointOptions.ValueNumericOptions.Format = NumericFormat.Currency; seriesCriteria.Add(reader[0].ToString()); seriesVisibilities.Add(false); series.Add(k, s); k++; } } reader.Close(); } // Draw series // By Time // Enumerate series here and send them via ajax if (ajax) { lbYHaving.Items.Clear(); lbYHaving.Items.Add(allValues); foreach (string s in seriesNames) { lbYHaving.Items.Add(s); } DataBind(lbYHaving); return; } if (ddlXValueType.SelectedValue == "Time") { foreach (Interval i in _intervals) { for (int j = 0; j < seriesNames.Count; j++) { using (SqlCommand command = GenerateReportCommand(i.Start, i.End, seriesCriteria[j])) { command.Connection = conn; SqlDataReader dr = command.ExecuteReader(); while (dr.Read()) { // Here it comes if (dr[0] is DBNull) { series[j].Points.Add(new SeriesPoint(i.Start, new double[] { 0 })); } else { series[j].Points.Add(new SeriesPoint(i.Start, new double[] { Convert.ToDouble(dr[0]) })); seriesVisibilities[j] = true; } } dr.Close(); } } } } if (ddlXValueType.SelectedValue == "Data") { using (SqlCommand command_data = new SqlCommand()) { command_data.Connection = conn; command_data.CommandText = "SELECT DISTINCT " + ddlXGroupByData.SelectedValue + " FROM PivotTable WHERE DateSale >= @Start AND DateSale < @End"; command_data.Parameters.Add(new SqlParameter("@Start", SqlDbType.DateTime) { Value = _intervals[0].Start }); command_data.Parameters.Add(new SqlParameter("@End", SqlDbType.DateTime) { Value = _intervals[_intervals.Count - 1].End }); SqlDataReader reader = command_data.ExecuteReader(); List<string> xData = new List<string>(); while (reader.Read()) { xData.Add(reader[0].ToString()); } reader.Close(); foreach(string xd in xData) { for (int j = 0; j < seriesNames.Count; j++) { using (SqlCommand command = GenerateReportCommandByData(xd, seriesCriteria[j])) { command.Connection = conn; SqlDataReader dr = command.ExecuteReader(); while (dr.Read()) { // Here it comes if (dr[0] is DBNull) { series[j].Points.Add(new SeriesPoint(xd, new double[] { 0 })); } else { series[j].Points.Add(new SeriesPoint(xd, new double[] { Convert.ToDouble(dr[0]) })); seriesVisibilities[j] = true; } } dr.Close(); } } } } } } int l = 0; object yHaving = Request[lbYHaving.ClientID.Replace('_', '$')]; if (yHaving == null) { yHaving = allValues; } lbYHaving.Items.Clear(); if (yHaving.ToString() != allValues) { { for (int i = 0; i < series.Count; i++) { if (seriesVisibilities[i]) { lbYHaving.Items.Add(series[i].Name); foreach (string s in yHaving.ToString().Split(',')) { if (s == series[i].Name) { lbYHaving.Items[l].Selected = true; seriesVisibilities[i] = true; break; } else { seriesVisibilities[i] = false; } } l++; } } } } else { for (int i = 0; i < series.Count; i++) { if (seriesVisibilities[i] && yHaving.ToString() != allValues) { lbYHaving.Items.Add(series[i].Name); } } } lbYHaving.Items.Insert(0, allValues); if (yHaving.ToString() == allValues) { lbYHaving.Items[0].Selected = true; } // Other for (int i = 0; i < series.Count; i++) { if (seriesVisibilities[i]) { if (seriesVisibilities[i] && yHaving.ToString() == allValues) { lbYHaving.Items.Add(series[i].Name); } chart.Series.Add(series[i]); } } #region Compute sum Series suma = new Series("Suma", ViewType.Line); suma.ValueScaleType = ScaleType.Numerical; suma.ArgumentScaleType = ScaleType.DateTime; if (ddlYValueType.SelectedValue == "4") { if (rblValueDisplayMode.SelectedValue != "2") { suma.PointOptions.ValueNumericOptions.Format = NumericFormat.Currency; } if (rblValueDisplayMode.SelectedValue == "2") { suma.PointOptions.ValueNumericOptions.Format = NumericFormat.Percent; } } DataTable grid = new DataTable(); string xArgumentName = ddlXValueType.SelectedItem.Text + " - dle "; if (ddlXValueType.SelectedValue == "Time") { xArgumentName += ddlXGroupByTime.SelectedItem.Text.ToLower(); } else { xArgumentName += ddlXGroupByData.SelectedItem.Text.ToLower(); } grid.Columns.Add(new DataColumn(xArgumentName)); for (int i = 0; i < chart.Series.Count; i++) { grid.Columns.Add(new DataColumn(chart.Series[i].Name)); } double sum; for (int j = 0; j < chart.Series[0].Points.Count; j++) { sum = 0; DataRow dr = grid.NewRow(); if (ddlXValueType.SelectedValue == "Time") { dr[0] = Convert.ToDateTime(chart.Series[0].Points[j].Argument).ToString("dd.MM.yyyy"); } else { dr[0] = chart.Series[0].Points[j].Argument; } for (int i = 0; i < chart.Series.Count; i++) { dr[i+1] = chart.Series[i].Points[j].Values[0]; sum += chart.Series[i].Points[j].Values[0]; } grid.Rows.Add(dr); suma.Points.Add(new SeriesPoint(chart.Series[0].Points[j].Argument, new double[] { sum })); // Percent if (rblValueDisplayMode.SelectedValue == "2") { for (int i = 0; i < chart.Series.Count; i++) { if (sum == 0) { chart.Series[i].Points[j].Values[0] = 0; } else { chart.Series[i].Points[j].Values[0] = Math.Round(((chart.Series[i].Points[j].Values[0] / sum) * 1), 2); } } } if (rblValueDisplayMode.SelectedValue == "3") { if (j > 0) { for (int i = 0; i < chart.Series.Count; i++) { chart.Series[i].Points[j].Values[0] = chart.Series[i].Points[j].Values[0] - chart.Series[i].Points[j - 1].Values[0]; } } else { for (int i = 0; i < chart.Series.Count; i++) { chart.Series[i].Points[j].Values[0] = 0; } } } } suma.View.Color = System.Drawing.Color.Black; series.Add(series.Count, suma); if (rblValueDisplayMode.SelectedValue == "1") { chart.Series.Add(series[series.Count - 1]); } if (chbShowSum.Checked && rblValueDisplayMode.SelectedValue == "1" && ddlXValueType.SelectedValue == "Time") { int toBeRemoved = chart.Series.Count - 1; for (int j = 0; j < toBeRemoved; j++) { chart.Series.RemoveAt(0); } } // Show grid DataRow drSum = grid.NewRow(); for(int i = 1; i < grid.Columns.Count; i++) { double dSum = 0; for (int j = 0; j < grid.Rows.Count; j++) { dSum += Convert.ToDouble(grid.Rows[j][i]); } drSum[i] = dSum; } grid.Columns.Add(new DataColumn("Součet za svislou osu")); for (int i = 0; i < grid.Rows.Count; i++) { double dSum = 0; for (int j = 1; j < grid.Columns.Count - 1; j++) { dSum += Convert.ToDouble(grid.Rows[i][j] == null ? "0" : grid.Rows[i][j]); } if (rblValueDisplayMode.SelectedValue == "2") { for (int j = 1; j < grid.Columns.Count - 1; j++) { if (dSum == 0) { grid.Rows[i][j] = "0"; } else { grid.Rows[i][j] = (Math.Round(Convert.ToDouble(grid.Rows[i][j] == null ? "0" : grid.Rows[i][j]) / dSum, 4) * 100).ToString() + " %"; } } } grid.Rows[i][grid.Columns[grid.Columns.Count-1]] = dSum; } grid.Rows.Add(drSum); grid.Rows[grid.Rows.Count - 1][0] = "Součet za vodorovnou osu"; gvGrid.DataSource = grid; gvGrid.DataBind(); #endregion #region Customize chart DevExpress.XtraCharts.XYDiagram xyDiagram = new XYDiagram(); if (ddlYValueType.SelectedIndex == 0) { xyDiagram.AxisY.Title.Text = "EUR"; } if (ddlYValueType.SelectedIndex == 1) { xyDiagram.AxisY.Title.Text = "Kusů"; } xyDiagram.AxisY.Title.Font = new System.Drawing.Font("Tahoma", 8); xyDiagram.AxisY.Label.Staggered = false; xyDiagram.AxisY.Title.Visible = true; xyDiagram.AxisY.Range.SideMarginsEnabled = true; xyDiagram.AxisY.Interlaced = true; xyDiagram.AxisX.Title.Font = new System.Drawing.Font("Tahoma", 8); xyDiagram.AxisX.Label.Staggered = true; xyDiagram.AxisX.Range.SideMarginsEnabled = true; xyDiagram.AxisX.Tickmarks.MinorVisible = false; xyDiagram.AxisX.Range.MinValue = from; xyDiagram.AxisX.Range.MaxValue = to; switch (interval) { case IntervalType.Day: xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day; break; case IntervalType.Week: xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day; xyDiagram.AxisX.GridSpacingAuto = false; xyDiagram.AxisX.GridSpacing = 7; break; case IntervalType.Month: xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Month; break; case IntervalType.Year: xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Year; break; } xyDiagram.EnableZooming = true; chart.Diagram = xyDiagram; chart.Width = Convert.ToInt32(txtScreenWidth.Text) - 50; chart.Height = 602; //chart.Height = Convert.ToInt32(txtScreenHeight.Text) - 230; #endregion chart.DataBind(); pnlGraph.Controls.Add(chart); }
void DrawChart(DataTable data, DateTime from, DateTime to, IntervalType interval, ValueRepresentation representation) { List<Interval> _intervals = new List<Interval>(); if (interval == IntervalType.Day || interval == IntervalType.Week) { // Day by day or week by week for (int i = 0; i < (to.Subtract(from).TotalDays / (int)interval); i++) { //Response.Write(i + 1); //Response.Write(": "); //Response.Write((i * (int)interval) + 1); //Response.Write(" - "); //Response.Write((i * (int)interval) + 1 + 7); //Response.Write(" | "); //Response.Write(from.AddDays((i * (int)interval) + 1 - 1)); //Response.Write(" - "); //Response.Write(from.AddDays((i * (int)interval) + 1 - 1)); //Response.Write("<br>"); _intervals.Add(new Interval(from.AddDays((i * (int)interval) + 1 - 1), from.AddDays((i * (int)interval) + (int)interval + 1 - 1))); } } if (interval == IntervalType.Month) { for (int i = 0; i < to.Month - from.Month + ((to.Year - from.Year) * 12) + 1; i++) { //Response.Write(i + 1); //Response.Write(": "); //Response.Write(new DateTime(from.Year, from.Month, 1).AddMonths(i)); //Response.Write(" - "); //Response.Write(new DateTime(from.Year, from.Month, 1).AddMonths(i+1).AddDays(-1)); //Response.Write("<br>"); _intervals.Add(new Interval(new DateTime(from.Year, from.Month, 1).AddMonths(i), new DateTime(from.Year, from.Month, 1).AddMonths(i + 1).AddDays(-1))); } } //List<> // Draw chart here item by item in _intervals WebChartControl chart = new WebChartControl(); chart.EnableViewState = false; ChartTitle title = new ChartTitle(); title.Text = "pokus"; title.Font = new System.Drawing.Font("Tahoma", 10); chart.Titles.Add(title); chart.FillStyle.FillMode = FillMode.Solid; Dictionary<int, Series> series = new Dictionary<int, Series>(); //foreach (int channelId in channels) //{ // Channel channel = db.Channels.Where(c => c.ChannelId == channelId).FirstOrDefault(); // if (channel == null) continue; // Series s = new Series(channel.ChannelName, ViewType.Line); // s.ValueScaleType = ScaleType.Numerical; // s.ArgumentScaleType = ScaleType.DateTime; // series.Add(channelId, s); //} using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CanonConnectionStringMain"].ConnectionString)) { conn.Open(); List<string> seriesNames = new List<string>(); int k = 0; // Create series using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; cmd.CommandText = string.Format("SELECT DISTINCT {0} FROM PivotTable WHERE DateSale >= @Start AND DateSale < @End", ddlYGroupBy.SelectedValue); cmd.Parameters.Add(new SqlParameter("@Start", SqlDbType.DateTime) { Value = _intervals[0].Start }); cmd.Parameters.Add(new SqlParameter("@End", SqlDbType.DateTime) { Value = _intervals[_intervals.Count - 1].End }); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Series s = new Series(reader[0].ToString(), ViewType.Line); s.ValueScaleType = ScaleType.Numerical; s.ArgumentScaleType = ScaleType.DateTime; seriesNames.Add(reader[0].ToString()); series.Add(k, s); k++; } reader.Close(); } // Draw series foreach (Interval i in _intervals) { for (int j = 0; j < seriesNames.Count; j++ ) { using (SqlCommand command = GenerateReportCommand(i.Start, i.End, seriesNames[j])) { command.Connection = conn; SqlDataReader dr = command.ExecuteReader(); while (dr.Read()) { // Here it comes //Response.Write(dr[0]); //Response.Write(" - "); //Response.Write(dr[1]); //Response.Write("<br>"); if (dr[0] is DBNull) { series[j].Points.Add(new SeriesPoint(i.Start, new double[] { 0 })); } else { series[j].Points.Add(new SeriesPoint(i.Start, new double[] { Convert.ToDouble(dr[0]) })); } } dr.Close(); } } } } foreach (KeyValuePair<int, Series> serie in series) chart.Series.Add(serie.Value); //diagram DevExpress.XtraCharts.XYDiagram xyDiagram = new XYDiagram(); xyDiagram.AxisY.Title.Font = new System.Drawing.Font("Tahoma", 8); xyDiagram.AxisY.Title.Text = "CZK"; xyDiagram.AxisY.Label.Staggered = false; xyDiagram.AxisY.Title.Visible = true; xyDiagram.AxisY.Range.SideMarginsEnabled = true; xyDiagram.AxisY.Interlaced = true; xyDiagram.AxisX.Title.Font = new System.Drawing.Font("Tahoma", 8); xyDiagram.AxisX.Label.Staggered = true; xyDiagram.AxisX.Range.SideMarginsEnabled = true; xyDiagram.AxisX.Tickmarks.MinorVisible = false; xyDiagram.AxisX.Range.MinValue = from; xyDiagram.AxisX.Range.MaxValue = to; switch (interval) { case IntervalType.Day: xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day; break; case IntervalType.Week: xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day; xyDiagram.AxisX.GridSpacingAuto = false; xyDiagram.AxisX.GridSpacing = 7; break; case IntervalType.Month: xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Month; break; } //xyDiagram.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Month; xyDiagram.EnableZooming = true; chart.Diagram = xyDiagram; chart.Width = 800; chart.Height = 500; chart.DataBind(); pnlGraph.Controls.Add(chart); }
void SetAxisTitle(XYDiagram diagram, string axisX, string axisY) { // Customize the appearance of the X-axis title diagram.AxisX.Title.Visible = true; diagram.AxisX.Title.Alignment = StringAlignment.Far; diagram.AxisX.Title.Text = axisX; diagram.AxisX.Title.TextColor = Color.Red; diagram.AxisX.Title.Antialiasing = true; diagram.AxisX.Label.Visible = false; // Customize the appearance of the Y-axis title diagram.AxisY.Title.Visible = true; diagram.AxisY.Title.Alignment = StringAlignment.Far; diagram.AxisY.Title.Text = axisY; diagram.AxisY.Title.TextColor = Color.Blue; diagram.AxisY.Title.Antialiasing = true; diagram.AxisY.NumericOptions.Format = NumericFormat.Number; diagram.AxisY.NumericOptions.Precision = 0; }
private void InitializeComponent() { this.components = new Container(); XYDiagram diagram = new XYDiagram(); RectangleGradientFillOptions options = new RectangleGradientFillOptions(); Series series = new Series(); LineSeriesView view = new LineSeriesView(); this.btnExecute = new SkinButton(); this.gpgChart = new GPGChartControl(this.components); this.tbQuery = new GPGTextArea(); this.btnSave = new SkinButton(); this.cbViewType = new GPGDropDownList(); this.cbLabels = new GPGCheckBox(); ((ISupportInitialize) base.pbBottom).BeginInit(); ((ISupportInitialize) this.gpgChart).BeginInit(); ((ISupportInitialize) diagram).BeginInit(); ((ISupportInitialize) series).BeginInit(); ((ISupportInitialize) view).BeginInit(); this.tbQuery.Properties.BeginInit(); base.SuspendLayout(); base.ttDefault.SetSuperTip(base.pbBottom, null); base.ttDefault.DefaultController.AutoPopDelay = 0x3e8; base.ttDefault.DefaultController.ToolTipLocation = ToolTipLocation.RightTop; this.btnExecute.Anchor = AnchorStyles.Right | AnchorStyles.Bottom; this.btnExecute.AutoStyle = true; this.btnExecute.BackColor = Color.Black; this.btnExecute.ButtonState = 0; this.btnExecute.DialogResult = DialogResult.OK; this.btnExecute.DisabledForecolor = Color.Gray; this.btnExecute.DrawColor = Color.White; this.btnExecute.DrawEdges = true; this.btnExecute.FocusColor = Color.Yellow; this.btnExecute.Font = new Font("Verdana", 8f, FontStyle.Bold); this.btnExecute.ForeColor = Color.White; this.btnExecute.HorizontalScalingMode = ScalingModes.Tile; this.btnExecute.IsStyled = true; this.btnExecute.Location = new Point(0x217, 0x185); this.btnExecute.Name = "btnExecute"; this.btnExecute.Size = new Size(0x5d, 0x1c); this.btnExecute.SkinBasePath = @"Controls\Button\Round Edge"; base.ttDefault.SetSuperTip(this.btnExecute, null); this.btnExecute.TabIndex = 0x17; this.btnExecute.TabStop = true; this.btnExecute.Text = "<LOC>Execute"; this.btnExecute.TextAlign = ContentAlignment.MiddleCenter; this.btnExecute.TextPadding = new System.Windows.Forms.Padding(0); this.btnExecute.Click += new EventHandler(this.btnExecute_Click); this.gpgChart.Anchor = AnchorStyles.Right | AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Top; this.gpgChart.AppearanceName = "Pastel Kit"; this.gpgChart.BackColor = Color.Black; this.gpgChart.Border.Color = Color.White; diagram.BackColor = Color.Black; diagram.AxisY.Color = Color.White; diagram.AxisY.InterlacedColor = Color.White; diagram.AxisY.Label.TextColor = Color.White; diagram.AxisY.Title.TextColor = Color.White; diagram.AxisX.Color = Color.White; diagram.AxisX.GridLines.Color = Color.White; diagram.AxisX.InterlacedColor = Color.White; diagram.AxisX.Label.TextColor = Color.White; diagram.AxisX.Title.TextColor = Color.White; diagram.BorderColor = Color.White; diagram.FillStyle.FillMode = DevExpress.XtraCharts.FillMode.Gradient; options.Color2 = Color.FromArgb(0x40, 0x40, 0x40); options.GradientMode = RectangleGradientMode.BottomRightToTopLeft; diagram.FillStyle.Options = options; diagram.Shadow.Color = Color.White; this.gpgChart.Diagram = diagram; this.gpgChart.Legend.BackColor = Color.Black; this.gpgChart.Legend.Border.Color = Color.Black; this.gpgChart.Legend.TextColor = Color.White; this.gpgChart.Location = new Point(12, 0x53); this.gpgChart.Name = "gpgChart"; this.gpgChart.RuntimeRotation = true; this.gpgChart.RuntimeSelection = true; series.PointOptionsTypeName = "PointOptions"; view.LineMarkerOptions.Size = 5; series.View = view; series.Name = "Series 1"; this.gpgChart.Series.AddRange(new Series[] { series }); this.gpgChart.SeriesTemplate.PointOptionsTypeName = "PointOptions"; this.gpgChart.Size = new Size(0x269, 0xca); base.ttDefault.SetSuperTip(this.gpgChart, null); this.gpgChart.TabIndex = 0x18; this.tbQuery.Anchor = AnchorStyles.Right | AnchorStyles.Left | AnchorStyles.Bottom; this.tbQuery.BorderColor = Color.White; this.tbQuery.Location = new Point(12, 0x123); this.tbQuery.Name = "tbQuery"; this.tbQuery.Properties.Appearance.BackColor = Color.Black; this.tbQuery.Properties.Appearance.BorderColor = Color.FromArgb(0x52, 0x83, 190); this.tbQuery.Properties.Appearance.ForeColor = Color.White; this.tbQuery.Properties.Appearance.Options.UseBackColor = true; this.tbQuery.Properties.Appearance.Options.UseBorderColor = true; this.tbQuery.Properties.Appearance.Options.UseForeColor = true; this.tbQuery.Properties.AppearanceFocused.BackColor = Color.FromArgb(0x10, 0x21, 0x4f); this.tbQuery.Properties.AppearanceFocused.BackColor2 = Color.FromArgb(0, 0, 0); this.tbQuery.Properties.AppearanceFocused.BorderColor = Color.FromArgb(0xbb, 0xc9, 0xe2); this.tbQuery.Properties.AppearanceFocused.GradientMode = LinearGradientMode.ForwardDiagonal; this.tbQuery.Properties.AppearanceFocused.Options.UseBackColor = true; this.tbQuery.Properties.AppearanceFocused.Options.UseBorderColor = true; this.tbQuery.Properties.BorderStyle = BorderStyles.Simple; this.tbQuery.Properties.LookAndFeel.SkinName = "London Liquid Sky"; this.tbQuery.Properties.LookAndFeel.UseDefaultLookAndFeel = false; this.tbQuery.Size = new Size(0x269, 0x60); this.tbQuery.TabIndex = 0x19; this.btnSave.Anchor = AnchorStyles.Right | AnchorStyles.Bottom; this.btnSave.AutoStyle = true; this.btnSave.BackColor = Color.Black; this.btnSave.ButtonState = 0; this.btnSave.DialogResult = DialogResult.OK; this.btnSave.DisabledForecolor = Color.Gray; this.btnSave.DrawColor = Color.White; this.btnSave.DrawEdges = true; this.btnSave.FocusColor = Color.Yellow; this.btnSave.Font = new Font("Verdana", 8f, FontStyle.Bold); this.btnSave.ForeColor = Color.White; this.btnSave.HorizontalScalingMode = ScalingModes.Tile; this.btnSave.IsStyled = true; this.btnSave.Location = new Point(0x1b4, 0x185); this.btnSave.Name = "btnSave"; this.btnSave.Size = new Size(0x5d, 0x1c); this.btnSave.SkinBasePath = @"Controls\Button\Round Edge"; base.ttDefault.SetSuperTip(this.btnSave, null); this.btnSave.TabIndex = 0x1a; this.btnSave.TabStop = true; this.btnSave.Text = "<LOC>Save"; this.btnSave.TextAlign = ContentAlignment.MiddleCenter; this.btnSave.TextPadding = new System.Windows.Forms.Padding(0); this.btnSave.Click += new EventHandler(this.btnSave_Click); this.cbViewType.Anchor = AnchorStyles.Left | AnchorStyles.Bottom; this.cbViewType.BackColor = Color.Black; this.cbViewType.BorderColor = Color.Black; this.cbViewType.DoValidate = true; this.cbViewType.FlatStyle = FlatStyle.Flat; this.cbViewType.FocusBackColor = Color.White; this.cbViewType.FocusBorderColor = Color.White; this.cbViewType.ForeColor = Color.White; this.cbViewType.FormattingEnabled = true; this.cbViewType.Items.AddRange(new object[] { "Beta Server", "GPG Test Server 1", "GPG Test Server 2", "Test Staging Server" }); this.cbViewType.Location = new Point(12, 0x185); this.cbViewType.Name = "cbViewType"; this.cbViewType.Size = new Size(0xe3, 0x15); base.ttDefault.SetSuperTip(this.cbViewType, null); this.cbViewType.TabIndex = 0x1b; this.cbViewType.SelectedValueChanged += new EventHandler(this.cbViewType_SelectedValueChanged); this.cbLabels.Anchor = AnchorStyles.Left | AnchorStyles.Bottom; this.cbLabels.AutoSize = true; this.cbLabels.Location = new Point(0xf5, 0x189); this.cbLabels.Name = "cbLabels"; this.cbLabels.Size = new Size(0x89, 0x11); base.ttDefault.SetSuperTip(this.cbLabels, null); this.cbLabels.TabIndex = 0x1c; this.cbLabels.Text = "Show Series Labels"; this.cbLabels.UsesBG = false; this.cbLabels.UseVisualStyleBackColor = true; this.cbLabels.CheckStateChanged += new EventHandler(this.cbLabels_CheckStateChanged); base.AutoScaleDimensions = new SizeF(7f, 13f); base.AutoScaleMode = AutoScaleMode.Font; base.ClientSize = new Size(640, 480); base.Controls.Add(this.cbLabels); base.Controls.Add(this.cbViewType); base.Controls.Add(this.btnSave); base.Controls.Add(this.tbQuery); base.Controls.Add(this.gpgChart); base.Controls.Add(this.btnExecute); this.Font = new Font("Verdana", 8f); base.Location = new Point(0, 0); base.Name = "DlgAdhocGraph"; base.ttDefault.SetSuperTip(this, null); this.Text = "DlgAdhocGraph"; base.Controls.SetChildIndex(this.btnExecute, 0); base.Controls.SetChildIndex(this.gpgChart, 0); base.Controls.SetChildIndex(this.tbQuery, 0); base.Controls.SetChildIndex(this.btnSave, 0); base.Controls.SetChildIndex(this.cbViewType, 0); base.Controls.SetChildIndex(this.cbLabels, 0); ((ISupportInitialize) base.pbBottom).EndInit(); ((ISupportInitialize) diagram).EndInit(); ((ISupportInitialize) view).EndInit(); ((ISupportInitialize) series).EndInit(); ((ISupportInitialize) this.gpgChart).EndInit(); this.tbQuery.Properties.EndInit(); base.ResumeLayout(false); base.PerformLayout(); }
public void Bind() { List<int> channels = this.Channels; List<int> products = this.Products; CanonDataContext db = Cdb.Instance; List<MainMonitor> list = CanonMainMonitor.GetValuesForChart(deStartDate.Date, deFinishDate.Date, channels, products); foreach (int productId in products) { Product product = db.Products.Where(p => p.ProductId == productId).FirstOrDefault(); if (product == null) continue; WebChartControl chart = new WebChartControl(); chart.EnableViewState = false; ChartTitle title = new ChartTitle(); title.Text = string.Format(Utilities.GetResourceString("Common", "ChartHeader"), product.ProductName, deStartDate.Date.ToString("dd.MM.yyyy"), deFinishDate.Date.ToString("dd.MM.yyyy")); title.Font = new System.Drawing.Font("Tahoma", 10); chart.Titles.Add(title); chart.FillStyle.FillMode = FillMode.Solid; Dictionary<int, Series> series = new Dictionary<int, Series>(); Series s0 = new Series("Recommended price", ViewType.Line); s0.ValueScaleType = ScaleType.Numerical; s0.ArgumentScaleType = ScaleType.DateTime; series.Add(0, s0); foreach (int channelId in channels) { Channel channel = db.Channels.Where(c=> c.ChannelId==channelId).FirstOrDefault(); if (channel == null) continue; Series s = new Series(channel.ChannelName, ViewType.Line); s.ValueScaleType = ScaleType.Numerical; s.ArgumentScaleType = ScaleType.DateTime; series.Add(channelId, s); } foreach (MainMonitor mm in list) { if (mm.ProductId != productId) continue; series[mm.ChannelId].Points.Add(new SeriesPoint(mm.CalcDate, new double[] { (double)mm.ChannelPrice })); series[0].Points.Add(new SeriesPoint(mm.CalcDate, new double[] { (double)mm.RecommendedPrice })); } foreach (KeyValuePair<int, Series> serie in series) chart.Series.Add(serie.Value); //diagram DevExpress.XtraCharts.XYDiagram xyDiagram = new XYDiagram(); xyDiagram.AxisY.Title.Font = new System.Drawing.Font("Tahoma", 8); xyDiagram.AxisY.Title.Text = "CZK"; xyDiagram.AxisY.Label.Staggered = false; xyDiagram.AxisY.Title.Visible = true; xyDiagram.AxisY.Range.SideMarginsEnabled = true; xyDiagram.AxisY.Interlaced = true; xyDiagram.AxisX.Title.Font = new System.Drawing.Font("Tahoma", 8); xyDiagram.AxisX.Label.Staggered = true; xyDiagram.AxisX.Range.SideMarginsEnabled = true; xyDiagram.AxisX.Tickmarks.MinorVisible = false; chart.Diagram = xyDiagram; chart.Width = 700; chart.Height = 500; chart.DataBind(); panelPics.Controls.Add(chart); this.FilesToSave.Add(this.SaveChartIntoFile(product.ProductName, chart)); } }