尽管图表具有数据C#,但条形图未显示水平列

时间:2018-11-30 01:41:03

标签: c#

我想用如下数据表创建条形图:

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;
        }
    }`

这是结果

enter image description here

我确定DataTable中的数据正确。 请帮帮我!

0 个答案:

没有答案