Hallo,
ich habe ein Problem mit dem DataGridView.
Ich habe das DataGridView an eine mySQL-Abfrage angebunden und er füllt dieses auch wunderbar
mit den Daten aus der mySQL-Tabelle.
Nach dem Füllen möchte ich einmal durch das Grid durchrennen und überall dort wo eine 1 in Cell(11)
steht eine andere Farbe setzen.
Leider setzt er die Farbe immer erst nachdem ich das Grid ein zweites mal aufgerufen habe.
Kann es sein, dass meine Farbe die ich setze durch irgend ein DataBinding-Ereignis wieder überschrieben oder gelöscht wird?
Hier mal der Code ...
Sub krankliste_ma_liste_laden(ByVal suchwort As String)
Dim suchstring As String = ""
Dim n As Long = 0
Dim a As Long = 0
Dim pos As Integer = 0
Dim dt3 As New DataTable
'DataGrid ausblenden, DataSource auf Nothing stellen und Grid Clear
Me.dgvkrank.Visible = False
Me.dgvkrank.DataSource = Nothing
Me.dgvkrank.Columns.Clear()
da = Nothing
'Datenbankabfrage
If suchwort = "" Then
da = New MySqlDataAdapter("SELECT id,Mitarbeiter,krankmeldung_per" & _
"as Art,anruf_am as Anruf,erstertag as Von,zweitertag as" & _
"Bis,krankmeldungseingang as" & _
"Atest,name_anrufer,username,name_gegenstelle,notizen,krankkind" & _
"from krankmeldungen where deletedflag=0 order by id desc", _
myConnection)
Else
da = New MySqlDataAdapter("SELECT id,Mitarbeiter,krankmeldung_per" & _
"as Art,anruf_am as Anruf,erstertag as Von,zweitertag as" & _
"Bis,krankmeldungseingang as" & _
"Atest,name_anrufer,username,name_gegenstelle,notizen,krankkind" & _
"from krankmeldungen where deletedflag=0 and (mitarbeiter like" & _
"'%" & suchwort & "%' or anruf_am like '%" & suchwort & "%')" & _
"order by id desc", myConnection)
End If
Try
da.Fill(dt3)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
' DataGrid an dt3 binden
Me.dgvkrank.DataSource = dt3
'
'Nur wichtige Zellen fuer den User einblenden
'
If Me.dgvkrank.Columns.Count > 0 Then Me.dgvkrank.Columns(0).Visible _
= False
If Me.dgvkrank.Columns.Count > 0 Then Me.dgvkrank.Columns(1).Width = 100
If Me.dgvkrank.Columns.Count > 0 Then Me.dgvkrank.Columns(2).Width = 100
If Me.dgvkrank.Columns.Count > 0 Then Me.dgvkrank.Columns(3).Visible _
= False
If Me.dgvkrank.Columns.Count > 0 Then Me.dgvkrank.Columns(4).Width = 100
If Me.dgvkrank.Columns.Count > 0 Then Me.dgvkrank.Columns(5).Width = 100
If Me.dgvkrank.Columns.Count > 0 Then Me.dgvkrank.Columns(6).Width = 100
If Me.dgvkrank.Columns.Count > 0 Then Me.dgvkrank.Columns(7).Visible _
= False
If Me.dgvkrank.Columns.Count > 0 Then Me.dgvkrank.Columns(8).Visible _
= False
If Me.dgvkrank.Columns.Count > 0 Then Me.dgvkrank.Columns(9).Visible _
= False
If Me.dgvkrank.Columns.Count > 0 Then Me.dgvkrank.Columns( _
10).Visible = False
If Me.dgvkrank.Columns.Count > 0 Then Me.dgvkrank.Columns( _
11).Visible = False
'
'Jetzt noch einmal durchlaufen und prüfen ob Spalte n,11 = 1
'Wenn JA dann andere Farbe.
'
For n = 0 To Me.dgvkrank.RowCount - 1
If Me.dgvkrank.Rows(n).Cells(11).Value = 1 Then
Me.dgvkrank.Rows(n).Cells(1).Style.BackColor = Color.FromArgb( _
CInt("-23297"))
Me.dgvkrank.Rows(n).Cells(2).Style.BackColor = Color.FromArgb( _
CInt("-23297"))
Me.dgvkrank.Rows(n).Cells(4).Style.BackColor = Color.FromArgb( _
CInt("-23297"))
Me.dgvkrank.Rows(n).Cells(5).Style.BackColor = Color.FromArgb( _
CInt("-23297"))
Me.dgvkrank.Rows(n).Cells(6).Style.BackColor = Color.FromArgb( _
CInt("-23297"))
End If
Next
'Anzahl der gefundenen Meldungen einblenden
If Me.dgvkrank.RowCount = 1 Then
Me.grpkrankliste.Text = Me.dgvkrank.RowCount & " MA in der Liste"
Else
If Me.dgvkrank.RowCount > 0 Then
Me.grpkrankliste.Text = Me.dgvkrank.RowCount & " MA in der" & _
"Liste"
Else
Me.dgvkrank.Text = "Keine Mitarbeiter in der Liste"
End If
End If
'Grid-Selektion säubern und Table dt3 auf Nothing setzen. Grid
' einblenden
Me.dgvkrank.ClearSelection()
dt3 = Nothing
Me.dgvkrank.Visible = True
Me.dgvkrank.Refresh()
End Sub Diese Prozedur wird bei Programmstart aufgerufen. Die Markierung fehlt daraufhin.
Wenn ich im Programm dann ein Suchwort eingebe und nach diesem suchen lasse, dann
ist die Farbe plötzlich da!
Vielen Dank im voraus |