2 Probleme beim DataGrid. beim Löschen und Hinzufügen einer Zeile

WaZZkeSS

Erfahrenes Mitglied
Hallo!

Ich habe 2 Probleme, wobei ich mir das eine nicht erklären kann.

Problem 1:
Ich habe ein Typisiertes dataset, welches die Daten von einer SQL DB bezieht. Unter dem DataGrid habe ich für jede Spalte eine TextBox, welches mir die Werte von DataGrid anzeigt sobald ich die Betroffene zeile auswähle. Weiters habe ich noch 3 Buttons (Neu, Löschen, Speichern). Wenn man jetzt als beispiel eine Ware oder eine Person hinzufügen möchte, klickt man auf die schalfläche Neu, damit wird im DataGrid eine neue Zeile hinzugefügt und alle TextBox-Felder gelöscht, und man kann dann nach ausfüllen der Felder auf die Schalfläche Speichern klicken und der Datensatz wird dann in der DB gespeichert und die Daten werden im DataGrid neu angebunden und angezeigt. So, soweit so gut.
Wie kann man die Daten absteigend Sortieren, so das der letzt eingefügte oben im DataGrid steht. und ich diese durch klicken einer Zeiler im DataGrid, bearbeiten kann.
Die Daten werden folgender maßen in die DB gespeichert.
Code:
        Try
            'Die Eingaben in der Tabelle Kunden
             'im DataSet Aktualisieren
            daKunden.Update(ds.t_Kunden)

        Catch ex As Exception
            'Bei fehler gib die Meldung aus
            MessageBox.Show(ex.Message)
        End Try



Problem 2:
Tja, das kann ich mir nicht erlären.
Wenn ich einen Kunden löschen möchte, welches auch problemlos funktioniert, bekomme ich ziehmlich of diese anzeige (Anhang). Es ist zwar nicht jedesmal aber ofters halt. Das komische ist, sobald ich igend wo im weißen Bereich klicke, wrid die Zelle darunter gezeigt. Allerdings der Wert.
Die Zeile wird folgenderaßen gelöscht.
Code:
        Try
            'Löschen den gewählten Eintrag
            ds.t_Kunden.Rows(dtgKunden.CurrentRowIndex).Delete()
            'Aktualisier die Tabelle
            daKunden.Update(ds.t_Kunden)
            'Aktualisiere den DataGrid
            dtgKunden.Refresh()
        Catch ex As Exception
            'Bei fehler gib die Meldung aus
            MessageBox.Show(ex.Message)
        End Try



Ich hoffe das mein Problem verständlich ist und ihr mir bei meinem Problem behilflich sein. Bitte auch keine Verweise auf andere Links oder so, weil ich schon lange nach dem Problem gesucht und sogar Bekannte danach gefragt habe.
Ich danke im vorhinein für jede Hilfe.


WaZZkeSS
 

Anhänge

  • 24808attachment.jpg
    24808attachment.jpg
    27,2 KB · Aufrufe: 26

Christian Kusmanow

Erfahrenes Mitglied
Hi!

@Problem1:
Du kannst mit DataRowCollection.InsertAt (DataTable.Rows) problemlos einfügen.

Aber was soll denn passieren wenn Du noch einen neuen hinzu fügst?
Sollen jetzt alle neuen Datensätze oben eingefügt werden und der Rest nach unten rutschen?
Währe es nicht einfacher sich auf das Sortieren zu beschränken
und den aktuellen nach dem Einfügen einfach im DataGrid auszuwählen? Nur mal so eine Idee...
In dem unten stehenden Snipped siehst eine Möglichkeit mittels eines DataViews Alle Einträge zu sortieren.
C#:
dataView.Sort = colHeadName + " ASC";
dataGrid.Refresh();
Wenn Du hier aber unbedingt willst, dass der zuletzt eingefügte oben steht,
wirst mit der Sortorder nicht sehr weit kommen. ;)

:google: = http://www.google.de/search?hl=de&q=+c#+datagrid+sort&btnG=Google-Suche&meta=lr=lang_de|lang_en

@Problem2:
Schaut echt seltsam aus. *g*
Verwendest hier evtl Threading?
Also ich kenn die VB Syntax nicht mehr so gut. Aber es schaut so aus als ob Du eine Row löschen willst,
auf die im Moment via Indexer zugegriffen wird. Schätze mal wenn Du die die Referenz der Row holst. sollte es gehen...
Oder versuch es mal mit DataTable.Rows.RemoveAt.

MfG,
cosmo
 
Zuletzt bearbeitet:

WaZZkeSS

Erfahrenes Mitglied
Hi!
ich habe es aufsteigend sortieren lassen und dann die letzte eingefügte Zeile gewählt.

Naja, danke trotzdem.

Und wegen den 2. problem, den habe ich noch nicht herausgefunden.


WaZZkeSS