Question

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

        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, c’est que je reçois une nouvelle ligne ajoutée au tableau, mais les anciennes lignes sont toujours là et que la nouvelle ligne ne semble pas contenir de valeur (un tas de zones de texte vides, et je sais que cette requête renvoie un résultat dans mon cas de test).

Quelqu'un peut-il m'expliquer ce que je dois faire?

Était-ce utile?

La solution

Je pense 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 l'utiliser? c'est-à-dire au lieu de:

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

vous devriez utiliser:

invoiceTable.Rows.Add(parameters);

Autrement, si vous souhaitez toujours créer un objet DataGridViewRow et appeler des valeurs de set, vous devez soit convertir le tableau en un tableau de type Object, soit transmettre chaque valeur en tant que son propre argument au lieu de le transmettre.

Autres conseils

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top