| |

VB.NET - Ein- und UmsteigerKomischer Effekt bei der farblichen Markierung einer DGV-Zeile??? | |  | Autor: xTobix | Datum: 28.04.09 14:37 |
| hallo!
ich zerbrech mir schon seit stunden den kopf über dieses problem. ich will folgendes erreichen:
ein datagridview soll aus einem dataset (mittels bindingsource angehängt) gefüllt werden. beim füllen sollen bestimmte zeilen farblich markiert werden, abhängig von einem bestimmten spaltenwert.
mit dem "cell_formating"-event des dgv ist es auch kein problem die einzelne ZELLE in der suchspalte mit "e.CellStyle.ForeColor = Color.Red" zu markieren.
jetzt will ich aber noch die zellen der zeile so markieren. mit der Forschleife sollte es meiner meinung nach gehen. jedoch passiert hier das komische.
in der ersten spalte funktioniert das noch (er markiert nur die zellen, bei denen in der einen spalte der wert gefunden wurde). die restlichen zellen markiert er aber ALLE...egal ob er den wert gefunden hat oder nicht.
wie kann das sein? er kann doch die FOR-schleife nur dann durchlaufen, wenn in der zeile (in der entprechenden spalte) der gesuchte wert gefunden wurde. vor allem macht es mich ganz verrückt, dass in der ersten spalte es noch funktioniert. übersehe ich was?
ich habe mir zwar mit einem ELSE-zweig geholfen, der die falsch markierten zeilen wieder "entfärbt, denoch bin ich damit nicht zufrieden. das kostet doch bestimmt performance, wenn ich diesen 2. (eigentlich unnötigen) schritt mache. das programm soll später nämlich von 6 personen verwendet werden.
weiß einer rat?
ich hab den code mal angehängt. wer das problem nachvollziehen möchte muß eigentlich nur eine datenbank anhängen...ein dgv erstellen (allowuseraddrows=false...kommt sonst zu einem fehler), eine textbox1 und ein button.
in der angehängten version funktioniert es wie gesagt...aber kommentiert den inhalt des ELSE-zweigs aus, dann seht ihr mein problem.
Public Class Form1
Dim conn As New SqlConnection("Server=.\SQLEXPRESS;Initial" & _
"Catalog=Import;Integrated Security=True")
Dim da As New SqlDataAdapter("SELECT * FROM Auftragsdatensatz", conn)
Dim bs As New BindingSource
Dim ds As New DataSet
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
ds.Clear()
da.Fill(ds, "AuftragsDatensatz")
bs.DataSource = ds
bs.DataMember = "AuftragsDatensatz"
DataGridView1.DataSource = bs
End Sub
Private Sub DataGridView1_CellFormatting(ByVal sender As System.Object, ByVal _
e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles _
DataGridView1.CellFormatting
'Spalte nach der ein bestimmter Wert gesucht wird=> wenn Wert vorhanden
' wird Zeile markiert
If DataGridView1.Columns(e.ColumnIndex).Name = "TYP" Then
If e.RowIndex < DataGridView1.Rows.Count Then
If e.Value.ToString.IndexOf(TextBox1.Text) >= 0 Then
''Markiert die jeweilige Zelle. Das hier funktioniert einwandfrei. _
Nur bei den restlichen Spalten gibts Probleme (siehe ELSE-Anweisung)
'e.CellStyle.ForeColor = Color.Black
'e.CellStyle.BackColor = Color.Red
For i As Integer = 0 To DataGridView1.ColumnCount - 1
DataGridView1.Rows(e.RowIndex).Cells(i).Style.BackColor = _
Color.Yellow
DataGridView1.Rows(e.RowIndex).Cells(i).Style.ForeColor = Color.Red
Next
Else
'Notwendig zum die Spalten, die nicht den Typ haben, in normalen
' Farben anzeigen. Eigentlich sollte ich diese Anweisung nicht
' brauchen, aber aus irgendeinem Grund
'markiert er in der oberen IF-Schleife ALLE Spalten Gelb (außer die
' erste).
For i As Integer = 0 To DataGridView1.ColumnCount - 1
DataGridView1.Rows(e.RowIndex).Cells(i).Style.BackColor = _
Color.White
DataGridView1.Rows(e.RowIndex).Cells(i).Style.ForeColor = _
Color.Black
Next
End If
End If
End If
End Sub
End Class
Beitrag wurde zuletzt am 28.04.09 um 14:52:13 editiert. |  |
 | 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 |
  |
|
sevWizard für VB5/6 
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere 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
|
|