Ich versuche, mein Datagridview-Steuerelement die ausgewählte Zeile nach Datenaktualisierung zu erinnern.
Der DGV ist Databound zu einer Liste von Geschäftsobjekten:Erinnern Sie sich an ausgewählte Zeile in DataGridView
Dim FXs As SortableBindingList(Of FX) = FX.LoadAllForBinding(FXStatus)
Dim bs As New BindingSource
bs.DataSource = FXs
Der Gesamtablauf ist so etwas wie folgt aus:
- Benutzer klickt auf einer Reihe
- Zeilenindex in einer Variablen gespeichert
- Benutzer bearbeitet Daten im Popup-Formular und schließt nach Fertigstellung
- Datagridview wird aktualisiert (von Grund auf neu gebunden)
Ausgewählte Reihe zum zuvor gespeicherten Index (in Databindingcomplete-Ereignis von DGV)
Me.dgvMain.Rows (_CurrentSelectedRowNo) .Selected = True
Diese gut zu funktionieren scheint gesetzt, ausgewählte Zeile ist richtig eingestellt (mindestens zählt die Zahl von 0 bis 1). Was jedoch als nächstes passiert, ist, dass der Debugger in die Eigenschaften des gebundenen Geschäftsobjekts springt (vermutlich liest er sie für die Bindung), so dass das DataBindingComplete-Ereignis ausgelöst wird, BEVOR die Datenbindung erfolgt ist.
Der DGV kann bis zu 300 Zeilen haben, daher ist es für den Benutzer ziemlich ärgerlich, dass er jedes Mal, wenn er eine Zeile bearbeitet, in die Reihe Null springt!
Mache ich hier etwas offensichtlich falsch? Soll ich dafür ein anderes Event nutzen?
Gibt es einen Grund, warum Sie nicht einfach die Werte in der Datenrasteransicht bearbeiten können? Welchen Vorteil hat die Bearbeitung der Daten in einem Popup-Formular? – SwDevMan81
Grundlegende Design, die DGV zeigt nur eine Teilmenge von Feldern. – Simon