Frage

Wie füge ich Zeilen programmgesteuert zu einem DataGridTable in C#?Wenn der Benutzer wählt eine option, ich will repopulate ein DataGridTable mit frischen Daten, die ich Erreiche, wie unten gezeigt:

        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();

Was zu geschehen scheint, ist, dass ich eine neue Zeile zur Tabelle Hinzugefügt, aber die alten Zeilen sind immer noch da, und die neue Zeile wird nicht angezeigt zu haben, alle Werte, die in einer Reihe von leeren Textfelder, und ich weiß, dass diese Abfrage ist die Rücksendung ein Ergebnis in meinem test-Fall).

Kann mir jemand erklären was ich zu tun habe?

War es hilfreich?

Lösung

Ich glaube Zeilen.Add() hat eine überlast für ein array von strings.Wenn Sie erstellen ein array von strings sowieso, warum nicht versuchen, es zu benutzen?d.h.statt:

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

Sie würde juse verwenden:

invoiceTable.Rows.Add(parameters);

Alternativ, wenn Sie wollen immer noch zu schaffen eine DataGridViewRow Objekt, und rufen Sie setvalues auf Sie, ich denke, Sie müssen entweder cast-array ein array vom Typ Object, oder passen Sie jeden Wert als seine eigene argument statt der übergabe von array.

Andere Tipps

Ich glaube, Sie brauchen .CreateCells (GridName) aufrufen, bevor Sie setvalue rufen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top