2009-01-01 9 views
3

Comment ajouter des lignes par programmation à un DataGridTable en C#? Lorsque l'utilisateur sélectionne une option, je veux repeupler un DataGridTable avec des données fraîches, que je suis en train d'acquérir comme indiqué ci-dessous:Ajouter des lignes par programme à un DataGridTable

 connect.Open(); 
     MySqlCommand comm = connect.CreateCommand(); 
     comm.CommandText = getCustomerInvoices + customerID + "\'"; 
     MySqlDataReader r = comm.ExecuteReader(); 
     while (r.Read()) 
     { 
      DataGridViewRow d = new DataGridViewRow(); 
      String[] parameters = new String[5]; 
      parameters[0] = r.GetValue(0).ToString(); 
      parameters[1] = r.GetValue(1).ToString(); 
      parameters[2] = r.GetValue(2).ToString(); 
      parameters[3] = r.GetValue(3).ToString(); 
      parameters[4] = r.GetValue(4).ToString(); 
      d.SetValues(parameters); 
      invoiceTable.Rows.Add(d); 
     } 
     connect.Close(); 

Ce qui semble arriver est que je reçois une nouvelle ligne ajoutée à la table, mais la les anciennes lignes sont toujours là, et la nouvelle ligne ne semble pas contenir de valeurs (un tas de zones de texte vides, et je sais que cette requête retourne un résultat dans mon cas de test). Est-ce que quelqu'un peut m'expliquer ce que je dois faire?

Répondre

3

Je crois que Rows.Add() a une surcharge pour un tableau de chaînes. Si vous créez un tableau de chaînes de toute façon, pourquoi ne pas essayer de l'utiliser? -à-dire au lieu de:

d.SetValues(parameters); 
invoiceTable.Rows.Add(d); 

vous Juse utiliser:

invoiceTable.Rows.Add(parameters); 

Alternativement, si vous voulez toujours créer un objet DataGridViewRow et appeler setValeurs là-dessus, je pense que vous devez soit jeter le tableau à un tableau de type Object, ou passez chaque valeur comme son propre argument au lieu de passer le tableau.

+0

Merci, je ne savais pas sur la version surchargée. Ça fonctionne maintenant. – Elie

3

Je crois que vous devez appeler .CreateCells (GridName) avant d'appeler setvalue

Questions connexes