DataGridView füllen

neues kleines Problem:

sobald ich in der Form einen neuen Datensatz in die DB eintrage, wird das DataGridView nicht aktualisiert. Gibt es da einen einfachen Befehl? Oder muss ich die gesamte Form neu laden?

So sieht mein Code zum füllen aus:

Code:
        private void Lager_Load(object sender, EventArgs e)
        {

            //Variablen

            DataTable dt = new DataTable("Daten");
            dt.Columns.Add(new DataColumn("Vorname"));
            dt.Columns.Add(new DataColumn("Nachname"));
            dt.Columns.Add(new DataColumn("Geburtsdatum"));

            for (int i = 0; i <= 15; i++)
            {
                AddNewRow(dt, aArtNr[i], aArtikel[i], aBestand[i]);
            }
            dgv.DataSource = dt;
        }

        private void AddNewRow(DataTable dt, string artNr, string artikel, string bestand)
        {
            DataRow dr = dt.NewRow();
            dr[0] = artNr;
            dr[1] = artikel;
            dr[2] = bestand;
            dt.Rows.Add(dr);
        }
 
die Funktion "add" habe ich bei AddNewRow dabei? es würde dann doch alles doppelt angehängt werden mit der zusätzlichen Zeile?
 
Nicht zusätzlich, statt dessen!
Arbeite nicht mit der DataTable, sondern mit dem DataGridView.
 
Ich steh grad voll auf der Leitung. Ich hab jetzt den direkten Zugriff auf das DataGridView versucht. Aber ich scheitere kläglich ): es kommt folgende Fehlermeldung:
Zum DataGridView-Steuerelement können nur Zeilen hinzugefügt werden, die Spalten enthalten. Die Spalten müssen zuerst hinzugefügt werden.

Code:
        private void Lager_Load(object sender, EventArgs e)
        {
            datenbank datenbank = new datenbank();

            string wArtNr = datenbank.auslesen("lager", "ArtikelNr");      //Wert vom Auslesen in EINEM string
            string wArtikel = datenbank.auslesen("lager", "Artikel");
            string wBestand = datenbank.auslesen("lager", "Bestand");

            string[] aArtNr = wArtNr.Split(',');        //Array 
            string[] aArtikel = wArtikel.Split(',');
            string[] aBestand = wBestand.Split(',');


            DataTable dt = new DataTable("Daten");
            dt.Columns.Add(new DataColumn("Vorname"));
            dt.Columns.Add(new DataColumn("Nachname"));
            dt.Columns.Add(new DataColumn("Geburtsdatum"));

            for (int i = 0; i <= 5; i++)
            {
                DataRow dr = dt.NewRow();
                dr[0] = aArtNr[i];
                dr[1] = aArtikel[i];
                dr[2] = aBestand[i;

                dgv.Rows.Add(dr);
                dgv.Rows.Add(dt, aArtNr[i], aArtikel[i], aBestand[i]);
            }
            //dgv.DataSource = dt;
        }


Nochmal zu meinem Problem ... Ich möchte, dass das DataGridView aktuallisiert wird, sobald ich durch die TextBoxen einen neuen Datensatz in die Datenbank eingetragen habe. Zudem hab ich noch ein Problem, ich möchte, wenn ich auf eine Zeile im DataGridView klicke, dass die Werte daraus in den Textboxen stehen, um sie im Bedarfsfall ändern zu können.

Das Projekt sollte bald fertig sein und ich verzweifele echt langsam an diesem DataGridView ): Vielleicht könntet ihr mir nochmal weiterhelfen.

Vielen vielen Dank
 
Die Fehlermeldung scheint ein wenig irreführend zu sein. Das passiert bei C# aber öfter.
Du möchtest wahrscheinlich die alten Inhalte verwerfen und das DataGridView mit einer neu erstellten Tabelle füllen. In dem Falle ist es besser, wenn du die Datenzeilen in eine neu erstellte Tabelle schreibst und danach diese als DataSource des dgv angibst. Dann hast du nämlich beim Programmlauf keine Verzögerungen durch unnötige Bildschirm-Refreshs.
Wenn du aber die ursprünglichen Inhalte behalten willst, dann brauchst du keine neue Tabelle, sondern fügst die neuen Zeilen direkt dem DataGridView hinzu; die dazugehörige Tabelle wird dadurch automatisch aktualisiert.
Deine Fehlermeldung resultiert wahrscheinlich aus der Tatsache, dass dein DataGridView noch keine DataSource hat.
Außerdem solltest du darauf achten, dass du für die Spalten auch die passenden Datentypen verwendest. Es macht keinen Sinn, wenn du beispielsweise einem int-Wert (z.B. Warenanzahl) einen String zuweist. Auch für Datumsangaben gibt es einen eigenen Datentyp DateTime.
Du brauchst für das manuelle Eingeben oder Ändern einer neuen Datenzeile keine zusätzlichen Steuerelemente. Das kannst du direkt im DataGridView machen.
 
Zuletzt bearbeitet:
Zurück