vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
DataGradView Markierung nach Sortieren beibehalten 
Autor: Senni
Datum: 29.03.11 12:54

Hallo,

weiß jemand auf die Schnelle, wie ich in einem DataGradView eine markierte Zeile nach der Sortierung über den Header beibehalte?
Wenn ich Sortiere bleibt nämlich einfach z.B. die dritte Zeile von oben markiert, auch wenn ich sortiere.

Danke und LG
Senni

~

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: DataGradView Markierung nach Sortieren beibehalten 
Autor: Manfred X
Datum: 29.03.11 16:21

Hallo!

Ich habe leider "auf die Schnelle" keine Ahnung, ob das Datagridview-Control
dafür eine geeignete Methode bereit hält.

Meine an das Datagridview gebundenen Tables enthalten normalerweise eine
UNIQUE-Spalte (= eindeutiger Wert in jeder Zeile) - z.B. Primärschlüssel der
Tabelle.
Im "SelectionChanged"-Ereignis notiere ich (in einer Liste) die Werte dieser
Spalte für alle "selected rows". Nach dem Sortieren kann diese Liste verwendet
werden, um die Zeilen erneut zu markieren. (Ich nutze dieses Verfahren, um
Datensatz-Auswahlen des Benutzers für die spätere Wiederverwendung aufzubewahren).

Unter der Annahme, das Datagridview nennt sich "dgv", die Selectionmode-Eigenschaft
ist auf Zeilenauswahl gestellt, die UNIQUE-Spalte heißt "Key" und ist vom Typ Integer:
Dim _selectedrows As New List(Of Integer)
Dim _protectselection As Boolean = False
 
Private Sub dgv_SelectionChanged(sender As Object, _
        e As System.EventArgs) Handles dgv.SelectionChanged
 
     With dgv
        If .SelectedRows.Count > 0 AndAlso Not _protectselection Then
           _selectedrows.Clear()
           For i As Integer = 0 To .SelectedRows.Count - 1
             _selectedrows.Add(CInt(.SelectedRows(i).Cells("Key").Value))
           Next i
        End If
     End With
End Sub
 
Private Sub dgv_Sorted(sender As Object, _
        e As System.EventArgs) Handles dgv.Sorted
 
   _protectselection = True
   With dgv
     .ClearSelection()
     If _selectedrows.Count > 0 Then
       For i As Integer = 0 To .Rows.Count - 1
         If _selectedrows.Contains(CInt(.Rows(i).Cells("Key").Value)) Then
           .Rows(i).Selected = True
         End If
       Next i
     End If
   End With
   _protectselection = False
End Sub
Geht vielleicht auch "cooler"

http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/01f937af-d0d0-4de5-8919-088e88c5af77/

MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel