RangeChart轴重复数据

时间:2018-10-03 15:03:02

标签: c# mysql mschart

根据图像,我希望相同的条目位于同一行而不是分开。我认为我需要为每个条目创建不同的系列,但是对此我还很陌生,我不知道该如何做。到目前为止,我已经创建了一个如图所示的系列。如果您可以通过一些代码帮助我,将不胜感激。这是我的代码:

private void LoadChartData()
    {
        var s = new Series();
        s.ChartType = SeriesChartType.RangeBar;

        chart1.Series.Clear();
        chart1.Series.Add(s);

        s.SetCustomProperty("PixelPointWidth", "25");

        chart1.Series[0].YValueType = ChartValueType.DateTime;
        chart1.ChartAreas[0].AxisY.LabelStyle.Format = "yyyy-MM-dd";
        chart1.ChartAreas[0].AxisY.Interval = 1;
        chart1.ChartAreas[0].AxisY.IntervalType = DateTimeIntervalType.Days;
        chart1.ChartAreas[0].AxisY.IntervalOffset = 1;

        chart1.Series[0].XValueType = ChartValueType.String;
        chart1.ChartAreas[0].AxisY.Minimum = minDate.ToOADate();
        chart1.ChartAreas[0].AxisY.Maximum = maxDate.ToOADate();

        ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings["shopmanagerConnectionString1"];
        MySqlConnection con = new MySqlConnection(conSettings.ToString());
        MySqlCommand cmd = new MySqlCommand(@"select * from shopmanager.planning;", con);
        MySqlDataReader myReader;
        try
        {
            con.Open();
            myReader = cmd.ExecuteReader();

            while (myReader.Read())
            {
                //check if machine is "en attente"
                string notPlanned;
                notPlanned = myReader.GetString("machine_name");
                if(notPlanned == "En attente")
                {
                    return;
                }
                else
                {
                    s.LabelForeColor = Color.Black;
                    s.Font = new System.Drawing.Font("Arial", 10f);
                    var start_date = myReader.GetDateTime("predicted_start_date");
                    var predicted_finish_date = myReader.GetDateTime("predicted_delivery");
                    var machine = myReader.GetString("machine_name");
                    int pix = s.Points.AddXY(machine, start_date, predicted_finish_date);
                    s.Points[pix].Label = myReader.GetString("project_number") + " " + myReader.GetString("part_name");
                }
            }
            cmd.Parameters.Clear();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        con.Close();

    }

enter image description here

1 个答案:

答案 0 :(得分:1)

您的问题来自将 x值添加为字符串。这是一个常见的错误,特别是因为起初看起来不错。另外,由于有时没有数值;您的机器有名称,城市不是数字,ID可能是数字,也可能不是数字。人们的名字从来都不是等等。因此,为什么要添加非数字x值有很多原因。

但是它们仅添加到自动标签中,实际x值全为Content-Type ,因此无法正确分组或用于其他用途。这可能是问题,也可能不是问题。您需要分组,所以这是一个问题!

因此,如果没有可用的号码,则必须补上号码

下面是一个示例,将所有(新)名称填充为axios0中,并将其索引添加为数字Dictionary

Keys