2017-02-26 25 views
0

我正在尝试向列表中添加值,但我一直收到错误“ArgumentOutOfRangeException”,我正在使用一个livecharts(图表库)。如何将值添加到C#中的列表

这里是我的代码:

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" } 
     }); 
+0

我会推荐使用轻量级的ORM,如[Dapper](https://github.com/StackExchange/Dapper)。 –

+1

什么行会抛出异常?什么值“超出范围”? –

+0

对不起,它是从这个“cartesianChart1.Series [1] .Values.Add(valuez);” – sakusa1

回答

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); 
     } 
+0

它不起作用。 :( – sakusa1

2

你应该从你的数据读取器

而且该指数变化为零

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

读取数据之前初始化certesianChart.Series这里是工作的代码。

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()); 
} 
+0

它的工作!谢谢! – sakusa1

相关问题