0

我试图向列表中添加值,但我不断收到错误“ArgumentOutOfRangeException”,我正在使用实时图表(图表库)。

这是我的代码:

string constring = "server=localhost;port=3306;username=root;password=root";
        string Query = "SELECT Therapist, COUNT(*) AS magnitude FROM dbinfo.tblorder GROUP BY Therapist ORDER BY magnitude DESC";
        MySqlConnection con = new MySqlConnection(constring);
        MySqlCommand cmdDB = new MySqlCommand(Query, con);
        MySqlDataReader myReader;


        try
        {
            con.Open();
            myReader = cmdDB.ExecuteReader();

            while (myReader.Read())
            {
                int valuez = myReader.GetInt16("magnitude");
                cartesianChart1.Series[1].Values.Add(valuez);
            }
        }
        catch (Exception ex)
        {

            MessageBox.Show(ex.ToString());
        }
        Data.con.Close();
        cartesianChart1.Series = new SeriesCollection
        {
            new ColumnSeries
            {

                Title = "Therapist",
                Values =  new ChartValues<int> { 10, 50, 39, 50 }
            }
        };
         cartesianChart1.AxisX.Add(new Axis
        {
            Title = "Therapists",
            Labels = new[] { "Maria", "Susan", "Charles", "Frida" }
        });
4

2 回答 2

2

您应该在从数据读取器读取数据之前初始化 certesianChart.Series

还将索引更改为零

cartesianChart1.Series[0].Values.Add(valuez);

这是工作代码。

cartesianChart1.Series = new SeriesCollection
{
   new ColumnSeries
   {
       Title = "Therapist",
       Values =  new ChartValues<int> { 10, 50, 39, 50 }
   }
};

try
{
   con.Open();
   myReader = cmdDB.ExecuteReader();

   while (myReader.Read())
   {
      int valuez = myReader.GetInt16("magnitude");
      cartesianChart1.Series[0].Values.Add(valuez);
   }
}
catch (Exception ex)
{
   MessageBox.Show(ex.ToString());
}
于 2017-02-26T02:25:39.600 回答
0

CartesianChart1.Series 仅包含此处定义的 1 个项目:

    cartesianChart1.Series = new SeriesCollection
    {
        new ColumnSeries
        {

            Title = "Therapist",
            Values =  new ChartValues<int> { 10, 50, 39, 50 }
        }
    };

您尝试访问此部分中的第二项:

        while (myReader.Read())
        {
            int valuez = myReader.GetInt16("magnitude");
            cartesianChart1.Series[1].Values.Add(valuez);
        }

尝试访问第一项:

        while (myReader.Read())
        {
            int valuez = myReader.GetInt16("magnitude");
            cartesianChart1.Series[0].Values.Add(valuez);
        }
于 2017-02-26T02:08:37.047 回答