Как следует из названия.
Я собираю кучу значений из базы данных SQL Compact и помещаю их в DataGridView. Одна ячейка (в данном случае «Статус») содержит поле varchar. Я хочу установить цвет фона этого поля в зависимости от его значения. Например, если это значение == "5" или "V", я хочу, чтобы оно было красным, если это "4" или "B", я хочу, чтобы оно было зеленым или что-то в этом роде.
Я пробовал цикл, который проверяет каждое значение в этой ячейке и устанавливает цвет фона, но когда я нажимаю заголовки DataGridView, чтобы изменить порядок значений, цвета исчезают. И... Не кажется правильным добиваться этого результата, зацикливая значения после этого, поскольку данных довольно много.
Я собираю значения примерно так:
Dim Source as Bindingsource = GetBinding()
Form1.ClientsDataGrid.Columns("CustomerNr").DataPropertyName = "CustNR"
Form1.ClientsDataGrid.Columns("CustomerName").DataPropertyName = "Name"
Form1.ClientsDataGrid.Columns("Status").DataPropertyName = "Status"
Form1.ClientsDataGrid.DataSource = Source
'Just in case, this is how i set the colors now
For Each TblRow As DataGridViewRow In Form1.ClientsDataGrid.Rows
If TblRow.Cells(3).Value.ToString = "5" Or TblRow.Cells(3).Value.ToString = "V" Then
TblRow.Cells(3).Style.BackColor = Color.Red
ElseIf (TblRow.Cells(3).Value.ToString = "4" Or TblRow.Cells(3).Value.ToString = "B" Then
TblRow.Cells(3).Style.BackColor = Color.Green
End If
Next
и GetBinding() выглядит примерно так:
'blah blah make connections
Dim Com As New SqlCeCommand("SELECT Customernumber AS CustNR, Customername AS Name, Customerstatus AS Status FROM Mytable", Con)
Dim dataAdapter As SqlCeDataAdapter
dataAdapter = New SqlCeDataAdapter(Com)
Dim dataSet As New DataSet
dataAdapter.Fill(dataSet, "Mytable")
Dim bind As BindingSource
bind = New BindingSource(dataSet, "Mytable")
Con.Close()
Com = Nothing
Return bind
Есть ли способ установить эти правила непосредственно в DataGridView? Я могу, конечно, зацикливаться каждый раз, когда я сортирую список, но это неправильно?