0

Ich benutze Ausgabe 2005 VS. Ich entwickle eine Winform-Desktop-Anwendung. Lassen Sie uns sagen, dass ich ein ungebundenes Datagridview haben, mit Tabelle wie folgt:Wie man eine Reihe von datagridview löscht und eine bestimmte Spalte zurücksetzt (vb.net 2005)

Original-Datenraster vor löschen:

original datagrid before delete

Wenn ich Stuff D entfernt (Art.-Nr 5), die "Item No" Spalte soll setze sich dementsprechend zurück. Die erwartete Ausgabe sollte:

Nach Zeile löschen:

after delete row

Die Spalte „Artikelnummer“ ist nicht ein Autowert, es ist nur die Nummer, die ich in einer neuen Zeile hinzufügen inkrementell als Benutzer zugeordnet (Neue Sachen). Ich habe versucht, den folgenden Code im Ereignis rowremoved zu verwenden, konnte jedoch die erwartete Ausgabe nicht erreichen. Bitte helfen Sie. Vielen Dank.

Antwort

0

Wenn das Ziel nur den Datensatzindex in der Zelle anzeigt, müssen Sie der Zelle keinen Wert zuweisen, und es reicht, e.Value = e.RowIndex + 1 im CellFormatting-Ereignis festzulegen.

Aber basierend auf Ihrem Kommentar scheint es, dass Sie brauchen, dass diese Zellen auch Werte haben. Sie muß also RowsRemoved und RowsAdded Ereignis von DataGridView und aktualisieren Sie den Zellenwert mit Zeilennummer zu handhaben:

Public Sub RefreshRowNumbers(g As DataGridView) 
    For Each r As DataGridViewRow In g.Rows 
     r.Cells(1).Value = r.Index + 1 
    Next 
End Sub 

Private Sub DataGridView1_RowsRemoved(sender As Object, _ 
    e As DataGridViewRowsRemovedEventArgs) Handles DataGridView1.RowsRemoved 
    RefreshRowNumbers(DirectCast(sender, DataGridView)) 
End Sub 

Private Sub DataGridView1_RowsAdded(sender As Object, _ 
    e As DataGridViewRowsAddedEventArgs) Handles DataGridView1.RowsAdded 
    RefreshRowNumbers(DirectCast(sender, DataGridView)) 
End Sub 
+0

Es gibt Gründe, warum ich habe, um die Werte in der Zelle zuweisen. Das Datagrid dient nur dazu, dem Benutzer anzuzeigen, was er bereits hinzugefügt hat. –

+0

OK, da Sie Werte benötigen, müssen Sie die Ereignisse "RowsRemoved" und "RowsAdded" verarbeiten und die Zeilennummern aktualisieren. Wenn Sie aus irgendeinem Grund die letzte Zeile (neue Zeile) ausschließen möchten, können Sie einfach eine for-Schleife verwenden, anstatt die Zeile auszuschließen, wenn 'row.IsNewRow = True 'ist. –

+0

Lassen Sie mich wissen, wenn Sie Fragen zur Antwort haben oder wenn Sie Probleme bei der Anwendung der Lösung haben. –

Verwandte Themen