chartControl 数据Easy处理

<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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值