2017-02-26 3 views
0

Ich habe versucht, der Liste Werte hinzuzufügen, aber ich bekomme immer den Fehler "ArgumentOutOfRangeException", ich benutze ein Live-Charts (Diagramm-Bibliothek).Wie füge ich Werte in die Liste in C hinzu #

hier ist mein Code:

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

Ich würde empfehlen, ein leichtes ORM wie [Dapper] (https://github.com/StackExchange/Dapper) zu verwenden. –

+1

Welche Zeile werfen die Ausnahme? Welcher Wert ist "außerhalb der Reichweite"? –

+0

Entschuldigung, es war von diesem "cartesianChart1.Series [1] .Values.Add (valuez);" – sakusa1

Antwort

0

cartesianChart1.Series nur 1 Artikel enthält, wie hier definiert:

cartesianChart1.Series = new SeriesCollection 
    { 
     new ColumnSeries 
     { 

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

Sie versuchen, das zweite Element in diesem Teil zuzugreifen:

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

Versuchen Sie, auf den ersten Artikel zuzugreifen:

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

es funktioniert nicht. :( – sakusa1

2

sollten Sie certesianChart.Series werden initialisiert, bevor Sie Daten aus dem Datenleser

Auch die Änderung des Index auf Null

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

Hier ist der Arbeitscode lesen.

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

es hat funktioniert! Danke! – sakusa1

Verwandte Themen