2013-06-20 11 views
0

У Ive есть Datagrid, заселенный из данных. Я хочу, чтобы изменить цвет шрифта дисплея для всей строки, в которой 5-й столбца (Column Name в SQL = DDLS_Num) значение больше 3.Условное форматирование DataGrid Цвета

Using conn As SqlConnection = New SqlConnection(ConnectionString) 
      conn.Open() 
      Using comm As SqlCommand = New SqlCommand(sqlquery, conn) 
       Dim rs As SqlDataReader = comm.ExecuteReader 
       Dim dt As DataTable = New DataTable 
       dt.Load(rs) 
       datgDXLog.DataSource = dt 
       ' If the 5th column's [or column name] value is >=3 Then 
       ' DataGridView1.Rows[5] [OR COLUMN NAME?] .DefaultCellStyle.ForeColor = Color.Red 
       ' EndIF 

      End Using 'comm 
     End Using 'conn 

ответ

2

Я думаю, что вы должны сделать это в RowPrepaint случае ..

Private Sub DataGridView1_RowPrePaint(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowPrePaintEventArgs) Handles DataGridView1.RowPrePaint 
    If DataGridView1.Rows(e.RowIndex).Cells(5).Value >= 3 Then 
     DataGridView1.Rows(e.RowIndex).DefaultCellStyle.ForeColor = Color.Red 
    End If 
End Sub 
+0

Это именно то, что мне нужно. Мне это нравится, даже если вы переупорядочиваете данные, они все еще относятся к тому, как информация заполняет его. * высокийfive * * upvote * * хорошо карма * – UPGRAYEDD

+0

Lifesaver !! Спасибо! – Gidil

0

Handle окраску в DataGridView.RowDataBound Событие:

Public Sub DataGridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles DataGridView1.RowDataBound 

    If e.Row.RowType = DataControlRowType.DataRow Then 

     If IsNumeric(e.Row.Cells(4).Text) AndAlso CDbl(e.Row.Cells(4).Text) > 3 Then 

      e.Row.ForeColor = System.Drawing.Color.Red 

     End If 

    End If 

End Sub 
+0

моих визуальных студии оленьей коже иметь «RowDataBound» – UPGRAYEDD

+0

у вас есть DataGridView помечен на этот вопрос. Является ли это элементом управления DataGridView или элементом управления DataGrid, к которому вы привязываете этот набор данных? – N0Alias

+1

Если это DataGrid, используйте событие DataGrid.LoadingRow. (Выберите свой DataGrid в combobox слева и событие в поле со списком справа). – N0Alias