| |

VB.NET - Ein- und UmsteigerDataGridView vergisst Tags | |  | Autor: Peter_nun_aber | Datum: 01.02.11 10:46 |
| Hallo,
seit Tagen schlage ich mich mit dem Problem herum, dass ein schick formatiertes DataGridView nach der Umsortierung durch Klick auf den Columnheader seine Formatierung vergisst.
Dazu findet man auch eine Menge im Internet, z.B. über "DataGridView lost CellStyle on Sort". Alle Tips gehen aber davon aus, dass das Styling in Abhängigkeit des Zellinhalts geschehen soll. Ich habe aber einen weiteren Wert in der Datatable, welchen ich nicht anzeigen möchte, und den Value somit überschreiben muss. Die Farbe der Zelle soll den Wert verdeutlichen. dgvtest.CellFormating event fällt also aus.
Da der Style nicht erhalten bleibt, dachte ich es wäre eine gute Idee die "Steuerinfomation" im Tag der Zelle abzulegen, ABER: die ist nach einem Sort auch leer. What nu?
Hier ein Beispiel zum schnellen Ausprobieren. Alles was Ihr braucht ist eine form mit einem datagridview Namens "dgvTest", den Rest macht der Code.
Public Class Form1
Dim dtTest As New DataTable
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
Try
With dtTest.Columns
.Add("Wert", GetType(System.String))
End With
With dtTest.Rows
.Add(New Object() {"Apfel#24#12"})
.Add(New Object() {"Birne#12#12"})
.Add(New Object() {"Pflaume#34#16"})
End With
With dgvTest
.DataSource = dtTest
.AutoResizeRows()
.AutoSizeRowsMode = _
DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
.AllowUserToAddRows = False 'letzte (leere) Zeile verbergen
.RowHeadersVisible = False 'Zeile mit dem Pfeil vor der
' Kommunikation verbergen
.AlternatingRowsDefaultCellStyle.BackColor = Color.LemonChiffon
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.ReadOnly = True
End With
For Each row As DataGridViewRow In dgvTest.Rows
For Each cell As DataGridViewCell In row.Cells
If Not IsDBNull(cell.Value) Then
Dim strWerte() As String = cell.Value.Split("#")
If strWerte.Length = 3 Then
'Zellwert korrigieren, damit der 3. Wert entfällt
cell.Value = strWerte(0) & " " & strWerte(1)
'Farben und Tags festlegen
If CDec(strWerte(1)) < CDec(strWerte(2)) Then
cell.Style.BackColor = Color.LightGreen
cell.Tag = "LightGreen"
ElseIf CDec(strWerte(1)) = CDec(strWerte(2)) Then
cell.Style.BackColor = Color.Gold
cell.Tag = "Gold"
ElseIf CDec(strWerte(1)) > CDec(strWerte(2)) Then
cell.Style.BackColor = Color.Salmon
cell.Tag = "Salmon"
End If
End If
End If
Next
Next
Catch ex As Exception
If MessageBox.Show("Es ist ein Fehler aufgetreten." + vbLf + _
"Möchten Sie eine erweiterte Fehlermeldung?", "Provendis" & _
"Fehlerbehandlung", MessageBoxButtons.YesNo, _
MessageBoxIcon.Error) = MsgBoxResult.Yes Then MsgBox(ex.ToString)
Exit Sub
End Try
End Sub
Private Sub dgvTest_Sorted(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles dgvTest.Sorted
Try
For Each row As DataGridViewRow In dgvTest.Rows
For Each cell As DataGridViewCell In row.Cells
If Not IsDBNull(cell.Value) Then
'Farben und Tags festlegen
If cell.Tag = "LightGreen" Then
cell.Style.BackColor = Color.LightGreen
ElseIf cell.Tag = "Gold" Then
cell.Style.BackColor = Color.Gold
ElseIf cell.Tag = "Salmon" Then
cell.Style.BackColor = Color.Salmon
End If
End If
Next
Next
Catch ex As Exception
If MessageBox.Show("Es ist ein Fehler aufgetreten." + vbLf + _
"Möchten Sie eine erweiterte Fehlermeldung?", "Provendis" & _
"Fehlerbehandlung", MessageBoxButtons.YesNo, _
MessageBoxIcon.Error) = MsgBoxResult.Yes Then MsgBox(ex.ToString)
Exit Sub
End Try
End Sub
End Class Hat einer eine Idee? Danke für Eure Zeit. |  |
 | 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 |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Neu! sevDTA 3.0 Pro 
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere Infos
|
|
|
Copyright ©2000-2025 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
|
|