2016-08-09 97 views
0

Ich möchte ein gestapeltes Diagramm aus MySQL-Datenbank zeichnen.
Ich möchte 4 Spalten mit den Namen "Port1", "Port2", "Port3" und "Port4" haben.unterscheiden die Spalten eines gestapelten Säulendiagramms

Mein Problem ist, wenn ich die Daten von meinem DB importieren, überprüfe ich den Typ eine Spalte in der Tabelle, dann zeichne ich das Diagramm. Meine Datenbank enthält 4 Arten von Port, folglich hätte ich 4 Spalten mit den Namen port1, port2, port3 und port4, aber mein Code generiert alle Daten, aber in der gleichen Spalte, die port1 ist.

Wie kann ich eine identische Anzahl von Datenpunkten hinzufügen?

This is a part of my code

try 
{ 
    con.Open(); 

    string query1 = "SELECT type,name,value FROM " + server + " WHERE type LIKE '%port1'" ;        
    string query4 = "SELECT type,name,value FROM " + server + " WHERE type LIKE '%port4'"; 
    SqlCommand cmmd = new SqlCommand(query1, con);    
    SqlCommand cmmd4 = new SqlCommand(query4, con); 
    SqlDataReader dataReader = cmmd.ExecuteReader(); 
    while (dataReader.Read()) 
    { 
     chart1.Series.Add(dataReader["name"].ToString()); 
     chart1.Series[dataReader["name"].ToString()].ChartType = SeriesChartType.StackedColumn; 
     chart1.Series[dataReader["name"].ToString()]["StackedGroupName"] = "Group1";     
     chart1.Series[dataReader["name"].ToString()].Points.AddXY((dataReader["type"].ToString()), dataReader["value"].ToString()); 
    } 

    con.Close(); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show("Error " + ex); 
} 
+1

Ihre 'Frage' eher unklar. Wo ist das Problem? Schreiben Sie die SQL oder richten Sie das Diagramm ein oder fügen Sie die Daten hinzu? oder binden Sie es? - 'Spalten' in einem gestapelten Diagramm werden durch unterschiedliche X-Werte erstellt. Deine Strings 'port1' .. sind ok aber nicht ideal dafür. Sie stapeln die Werte oder verschiedene Reihen aufeinander, indem Sie dieselben __numerischen__ x-Werte haben. Da Ihre x-Werte keine numerischen Werte haben, müssen Sie für jede Serie eine identische Anzahl von Datenpunkten hinzufügen oder sie werden nicht übereinstimmen. – TaW

+0

mein Problem ist, wenn ich die Daten von meinem DB importieren, überprüfe ich den Typ eine Spalte in der Tabelle, dann zeichne ich das Diagramm. Meine DB enthält 4 Arten von Port, folglich hätte ich 4 Spalten mit den Namen port1, port2, port3 und port4, aber mein Code generiert alle Daten, aber auf der gleichen Spalte, die port1 ist – meryam

+0

Wie kann ich eine identische Anzahl von Datenpunkten hinzufügen? – meryam

Antwort

0

versuchen {

  con.Open(); 

      string query1 = "SELECT type,name,value FROM " + server + " WHERE type LIKE '%port1'" ;          
      SqlCommand cmmd = new SqlCommand(query1, con);    
      SqlDataReader dataReader = cmmd.ExecuteReader(); 
      while (dataReader.Read()) 
       { 

       chart1.Series.Add(dataReader["name"].ToString()); 
       chart1.Series[dataReader["name"].ToString()].ChartType = SeriesChartType.StackedColumn; 
       chart1.Series[dataReader["name"].ToString()]["StackedGroupName"] = "Group1";     
       chart1.Series[dataReader["name"].ToString()].Points.AddXY((dataReader["type"].ToString()), dataReader["value"].ToString());      

       } 

      con.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error " + ex); 
     } 



     try 
     { 

      con.Open(); 
      string query2 = "SELECT type,name,value FROM " + server + " WHERE type LIKE '%port2'"; 
      SqlCommand cmmd2 = new SqlCommand(query2, con); 
      SqlDataReader dataReader2 = cmmd2.ExecuteReader(); 
      while (dataReader2.Read()) 
      { 

       chart1.Series.Add(dataReader2["name"].ToString()); 

       chart1.Series[dataReader2["name"].ToString()].ChartType = SeriesChartType.StackedColumn; 
       chart1.Series[dataReader2["name"].ToString()]["StackedGroupName"] = "Group2"; 
       // MessageBox.Show(dataReader2["type"].ToString()); 
       chart1.DataBind(); 
       chart1.Series[dataReader2["name"].ToString()].Points.AddXY("Port_2", dataReader2["value"].ToString()); 
       chart1.Series[dataReader2["name"].ToString()]["PointWidth"] = "1"; 

      } 
      con.Close(); 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show("Error "+ ex); 
     }