2016-03-29 12 views
0

ich habe:Wie wähle ich die Spalte aus, der ich Daten in ein DataGridView hinzufügen möchte? Diesen Quellcode

private void button1_Click(object sender, EventArgs e) 
    { 
     dataGridView1.Visible = true; 
     dataGridView2.Visible = true; 
     SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Olimpiada\SistemSolar\SistemSolar\DBSistem.mdf;Integrated Security=True;User Instance=True"); 
     con.Open(); 
     SqlCommand cmd = new SqlCommand("SELECT Denumire FROM Caracteristici", con); 
     SqlCommand cmd1 = new SqlCommand("SELECT Valoare FROM Valori", con); 
     SqlDataReader sdr = cmd.ExecuteReader(); 
     while (sdr.Read()) 
     { 
      string[] RowData = { sdr.GetString(0) }; 
      dataGridView2.Rows.Add(RowData); 
     } 
     sdr.Close(); 
     //SqlCommand cmd1 = new SqlCommand("SELECT Valoare FROM Valori", con); 
     SqlDataReader sdr1 = cmd1.ExecuteReader(); 
     while(sdr1.Read()) 
     { 
      string[] RowData1 = { sdr1.GetString(0) }; 
      dataGridView2.Rows.Add(RowData1); 
     } 
     sdr1.Close(); 
     SqlCommand cmd2 = new SqlCommand("SELECT UM FROM Caracteristici", con); 
     SqlDataReader sdr2 = cmd2.ExecuteReader(); 
     while (sdr2.Read()) 
     { 
      string[] RowData2 = { sdr2.GetString(0) }; 
      dataGridView2.Rows.Add(RowData2); 
     } 
     sdr2.Close(); 

    } 

Und ich habe eine Frage dazu: Wie können wählen, nachdem ich RowData fertig Einsetzen in den anderen Spalt zu bewegen? Denn mit diesem Code sind alle Daten nur auf einer einzigen Spalte.

Antwort

0

löste ich die problem.I die Lösung hier verlassen wird:

string[] x = new string[100]; 
     string[] y = new string[100]; 
     string[] z = new string[100]; 
     string[] den = new string[100]; 
     SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DBSistem.mdf;Integrated Security=True;User Instance=True"); 
     con.Open(); 
     SqlCommand cmd = new SqlCommand("SELECT Denumire FROM Caracteristici", con); 
     SqlCommand cmd1 = new SqlCommand("SELECT Valoare FROM Valori", con); 
     SqlDataReader sdr = cmd.ExecuteReader(); 
     int i = 0; 
     while (sdr.Read()) 
     { 
       x[i] = sdr.GetString(0); 
       i++; 
     } 
     sdr.Close(); 
     SqlDataReader sdr1 = cmd1.ExecuteReader(); 
     i = 0; 
     while(sdr1.Read()) 
     { 
      y[i] = sdr1.GetString(0); 
      i++; 
     } 
     sdr1.Close(); 
     i = 0; 
     SqlCommand cmd2 = new SqlCommand("SELECT UM From Caracteristici", con); 
     SqlDataReader sdr2 = cmd2.ExecuteReader(); 
     while (sdr2.Read()) 
     { 
      z[i] = sdr2.GetString(0); 
      i++; 
     } 
     sdr2.Close(); 
     for (i = 0; i <= 10; i++) 
     { 
      string[] RowData = { x[i], y[i], z[i] }; 
      dataGridView2.Rows.Add(RowData); 
     } 
1

Das Problem ist, dass, wenn Sie Ihre Daten in die Zeile hinzufügen Sie es wie folgt hinzufügen:

string[] RowData = { sdr.GetString(0) }; 
dataGridView2.Rows.Add(RowData); 

Dies ist immer die Daten in der ersten Spalte hinzufügen. Um die Daten zu anderen Spalten hinzuzufügen, müssen Sie die Daten dem Spaltenindex hinzufügen, den Sie benötigen, z.

string[] RowData = { "Column1", sdr.GetString(0), "Column3" }; 

Fügt der zweiten Spalte Daten hinzu, wenn 3 Spalten vorhanden sind.

https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rows(v=vs.110).aspx

+0

Hallo! Danke für Ihre Antwort ... Meine Frage war eine andere (überprüfen Sie meinen Quellcode). Nachdem ich die erste Spalte (RowData) gefüllt hatte, öffnete ich einen anderen Reader für die nächsten Daten, die ich aus einer anderen Tabelle in meiner Datenbank einfügen musste . Und ich kann RowData1 = {RowData, sdr1.Getstring (0)} nicht verwenden, solange ich RowData als eine lokale Varibale deklarierte. –

0

Das ist eine Idee, ich hoffe, dass Sie es bekommen! Dieses Beispiel wird eine Zeile mit allen Spalten hinzufügen gefüllt:

foreach (var item in Logs) 
{ 
    string[] row = new string[] { item.Id, item.Name, item.Description }; 

    dataGridView.Rows.Add(row); 
    dataGridView.ClearSelection(); 
    dataGridView.Rows[dataGridView.Rows.Count - 1].Selected = true; 
    dataGridView.FirstDisplayedScrollingRowIndex = dataGridView.Rows.Count - 1; 
} 

Die Reihenfolge der string[] row = new string[] { item.Id, item.Name, item.Description }; sollte auf Ihre Datagridview-Spalten gleich sein.

Logs in meinem Code ist ein List<Log>, sollte aber mit jedem anderen Sammlertyp arbeiten.

Wenn Protokolle mit verschiedenen Objekten gefüllt werden, fügt dieses Beispiel die gleiche Anzahl an Zeilen hinzu.

Verwandte Themen