<pre class="Csharp" name="code">using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using DevExpress.XtraCharts;
namespace Mysun{
public class ChartHelper
{
///
/// 将表简单绑定到Chart
///
/// 要绑定的数据源
/// 分析项Index
/// chart控件
/// 数据棒图显示显示的样式,如:StackedBarSeriesView
public static void EasyBound(DataTable dataTable, int sectionColumn, ChartControl chart, BarSeriesView seriesView,string[] seriesToBeDeleted)
{
try
{
chart.DataSource = null;
chart.Series.Clear();
DataTable dtV = HTable2VTable(dataTable, sectionColumn);
if (seriesToBeDeleted != null && seriesToBeDeleted.Length > 0)
foreach (string series in seriesToBeDeleted)
RemoveSeries(dtV, 1, series);
// 设置数据源
chart.DataSource = dtV;
//设置纵坐标项目(分析项)
chart.SeriesDataMember = "Y";
//设置横坐标项目
chart.SeriesTemplate.ArgumentDataMember = "X";
chart.SeriesTemplate.ValueDataMembers.AddRange(new string[] { "V" });
//样式
chart.SeriesTemplate.View = seriesView;
foreach (Series s in chart.Series)
s.Label.Visible = false;
}
catch
{
System.Windows.Forms.MessageBox.Show("Chart转换出错");
}
}
public static void EasyBound(DataTable dataTable, int sectionColumn, ChartControl chart, BarSeriesView seriesView)
{
EasyBound(dataTable, sectionColumn, chart, seriesView, null);
}
///
/// 将表绑定到Chart,对指定列给出第二坐标
///
/// 要绑定的数据源
/// 分析项Index
/// chart控件
/// 第一坐标上的数据棒图显示的样式,如:StackedBarSeriesView
/// 第二坐标上的数据显示的样式,如:线图
/// 需要以第二坐标为纵轴的序列名
///第二坐标最大值
public static void EasyBound(DataTable dataTable, int sectionColumn, ChartControl chart, BarSeriesView seriesView, ViewType viewType, string[] lineNames, double maxValue)
{
EasyBound(dataTable, sectionColumn, chart, seriesView, viewType, lineNames, maxValue, null);
}
public static void EasyBound(DataTable dataTable, int sectionColumn, ChartControl chart, BarSeriesView seriesView, ViewType viewType, string[] lineNames, double maxValue, string[] seriesToBeDeleted)
{
try
{
EasyBound(dataTable, sectionColumn, chart, seriesView, seriesToBeDeleted);
XYDiagram diagram = (XYDiagram)chart.Diagram;
diagram.SecondaryAxesY.Clear();
SecondaryAxisY axisY = new SecondaryAxisY("axisY");
//axisY.Title.Visible = true;
//设置百分比样式
if (maxValue < 1)
{
axisY.NumericOptions.Format = NumericFormat.Percent;
}
//axisY.Range.SetMinMaxValues(0, maxValue);
diagram.SecondaryAxesY.Add(axisY);
foreach (Series series in chart.Series)
{
foreach (string lineName in lineNames)
{
if (lineName == series.Name)
{
series.ChangeView(viewType);
((XYDiagramSeriesViewBase)series.View).AxisY = axisY;
}
}
}
}
catch
{
System.Windows.Forms.MessageBox.Show("Chart转换出错");
}
}
///
/// 横表转换为绑定到Chart时候所用的纵表
///
/// 数据源
/// 分析项Index
/// 输出的纵表,字段为X:表示横轴,Y:要分析的各项,V:值
private static DataTable HTable2VTable(DataTable dataTable, int SectionColumn)
{
DataTable dt = new DataTable();
dt.Columns.Add("X", typeof(String));
dt.Columns.Add("Y", typeof(String));
dt.Columns.Add("V", typeof(Double));
foreach (DataRow dr in dataTable.Rows)
{
foreach (DataColumn dc in dataTable.Columns)
{
if (dataTable.Columns[SectionColumn] != dc)
dt.Rows.Add(new object[] {
dc.ColumnName,
dr[SectionColumn],
double.Parse(dr[dc].ToString())
});
}
}
return dt;
}
private static void RemoveSeries(DataTable dataTable, int sectionColumn,string name)
{
for (; ; )
{
DataRow[] drs = dataTable.Select("Y = &apos;" + name + "&apos;");
if (drs.Length > 0)
drs[0].Delete();
else
break;
}
}
}
}
</pre>
分享到:
相关推荐
devexpress chartControl数据绑定例程
本实例根据devexpress中的demo实现图表非连续点的显示。
DevExpress中的ChartControl顾名思义就是数据基于图表展示,其关键在于Series上的处理。本文实例展示了ChartControl的用法,具体内容如下: 主要功能代码部分如下: using System; using System.Drawing; using ...
DEVexpress chartControl、gridControl具有绘图多纵轴显示功能,打印输出,可以动态调整需要显示的图表
此案例是关于Dev GridControl 合chartControl 控件的显示数据 GridControl 控件: 1.绑定IList<T> 对象 2.实现全选 3.删除选择的多行 4.在GridControl 最下行显示某列所有数据计算总和、某列下行显示总记录数 5.某...
代码是自己编写测试的,保证可用,环境为vs2012,chartControl绘制,其中包括绘制直方图的窗体,曲线图导出图片,曲线图导出pdf,数据导出Excel文档,
ChartControl的一些例子 PaletteChooser.xaml ChartUserControl.xaml
利用devexpress公司的控件chartcontrol 从txt中读取数据并将数据显示在chartcontrol里
WPF chartControl 设置特效(自己创建测试时创建的一些列子)TextPaletteChoose设置ChartControl的自定义颜色,设置显示的SeriesLable 的特效
DevExpress的chartcontrol从数据文件读取数据然画画点,正常操作是:打开文件,逐个读取,逐个解析,然后逐个添加到图形控件上,经测试这个方法来加载数据文件速度非常慢,一个几十k的文件加载时间超过1分钟,不可...
两大数据控件结合使用,共同的对数据的游标详细的描叙
Sample Microsoft ChartControl
主要介绍了DevExpress中ChartControl实现时间轴的方法,涉及相关C#绘图程序用法,具有一定的实用价值,需要的朋友可以参考下
c# winform中DEV的ChartControl用法 有折线图,两条曲线,饼状图,柱状图,图形导出为png图片,源代码示例,环境vs2013开发,DEV控件
很好用的chart控件,转载于codeproject
ChartControl双Y轴显示实例源码
使用环境VS2008,DevExpress第三方控件 winform表格视图开发
用第三方Dev的Chartcontrol实现的柱状图 每条柱子分两段显示 希望对新手有帮助.实际显示内容为每条线的每个工单的已生产数量和未生产数量的比例关系
DEVexpress chartControl 柱形图、饼形图、曲线图简单例子
关于DevExpress WPF ChartControl X轴Y轴标签颜色设置问题,大于0便签为绿色,小于0为红色。有需求的可以下载该资源学习参考,该资源请勿经本人允许随便上传,经发现菊花不保。