2017-02-26 27 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

相關問題