我想用如下数据表创建条形图:
SP002项目115000.00
SP009项目320000.00
SP000项目450000.00
SP001项目1080000.00
SP005项目1500000.00
SP007项目1900000.00
SP012项目2000000.00
项目是系列的示例名称
我尝试使用以下代码在C#上创建该代码:
public void displayChartRank(DataTable dtVND, DataTable dtUSD, DataTable dtEUR)
{
btnError.Size = new Size(1040, 440);
try
{
chartRank.Visible = true;
chartRank2.Visible = false;
btnError.Visible = false;
double max = 0;
if (dtUSD.Rows.Count > 0)
{
max = Convert.ToDouble(dtUSD.Rows[0][2]);
foreach (DataRow dr in dtUSD.Rows)
if (max < Convert.ToDouble(dr[2])) max = Convert.ToDouble(dr[2]);
}
if (dtEUR.Rows.Count > 0)
{
max = Convert.ToDouble(dtEUR.Rows[0][2]);
foreach (DataRow dr in dtEUR.Rows)
if (max < Convert.ToDouble(dr[2])) max = Convert.ToDouble(dr[2]);
}
if (dtVND.Rows.Count > 0)
{
max = Convert.ToDouble(dtVND.Rows[0][2]);
foreach (DataRow dr in dtVND.Rows)
if (max < Convert.ToDouble(dr[2])) max = Convert.ToDouble(dr[2]);
}
if (chartRank.ChartAreas[0].AxisY.Maximum < max)
chartRank.ChartAreas[0].AxisY.Maximum = (Convert.ToInt32((max.ToString().Substring(0, 1))) + 1) * Math.Pow(10, Convert.ToInt32(max.ToString().Length)
if (max == 0) throw new Exception();
chartRank.Series[0].ChartType = SeriesChartType.Bar;
chartRank.Series[1].ChartType = SeriesChartType.Bar;
chartRank.Series[2].ChartType = SeriesChartType.Bar;
chartRank.Series[0].LegendText = "VND";
chartRank.Series[1].LegendText = "USD";
chartRank.Series[2].LegendText = "EUR";
chartRank.Series[0].IsValueShownAsLabel = true;
chartRank.Series[1].IsValueShownAsLabel = true;
chartRank.Series[2].IsValueShownAsLabel = true;
chartRank.Series[0].IsVisibleInLegend = true;
chartRank.Series[1].IsVisibleInLegend = true;
chartRank.Series[2].IsVisibleInLegend = true;
string[] x = (from p in dtVND.AsEnumerable()
select p.Field<string>("series")).ToArray();
decimal[] y = (from p in dtVND.AsEnumerable()
select p.Field<decimal>("sValue")).ToArray();
chartRank.Series[0].Points.DataBindXY(x, y);
x = null;
y = null;
x = (from p in dtUSD.AsEnumerable()
select p.Field<string>("series")).ToArray();
y = (from p in dtUSD.AsEnumerable()
select p.Field<decimal>("sValue")).ToArray();
chartRank.Series[1].Points.DataBindXY(x, y);
x = null;
y = null;
x = (from p in dtEUR.AsEnumerable()
select p.Field<string>("series")).ToArray();
y = (from p in dtEUR.AsEnumerable()
select p.Field<decimal>("sValue")).ToArray();
chartRank.Series[2].Points.DataBindXY(x, y);
for (int i = 0; i < chartRank.Series.Count; i++)
{
for (int j = 0; j < chartRank.Series[i].Points.Count; i++)
{
chartRank.Series[i].Points[j].IsEmpty = true;
}
}
}
catch (Exception)
{
btnError.Visible = true;
}
}`
这是结果
我确定DataTable中的数据正确。 请帮帮我!