Datagridview1 был связан с Datatable. В этой DataTable хранится значение цвета для рисования каждой строки. И BindingSource был использован для фильтрации.
Dim dt As New DataTable
Dim dcColor As New DataColumn("Color", GetType(Color))
Dim dcChecked As New DataColumn("Checked", GetType(Boolean))
Dim bs As New BindingSource
dt.Columns.Add(dcColor)
dt.Columns.Add(dcChecked )
bs.DataSource = dt
DataGridView1.DataSource = bs
Мне нужно получить значение цвета для каждого datarow в Datatable, а затем использовать его для рисования каждой строки в datagridview.
И если у меня много датаров (1000-10,0000 строк), и мне нужно отфильтровать Datagridview следующим образом
bs.Filter = "Checked = True"
Это означает, что я должен выполнить итерацию по всем даторам, чтобы получить каждое значение цвета и установить обратно значение datagridviewrow.
Private Sub DataGridView1_Paint(sender As Object, e As PaintEventArgs) Handles DataGridView1.Paint
Try
For Each dr As DataRow In dt.Rows
Dim needColor As Color = dr.Item("Color")
DataGridView1.Rows(???).DefaultCellStyle.BackColor = needColor
Next
Catch ex As Exception
m_logger.AppendLog(ex)
End Try
End Sub
Это не плохо для больших данных.
Как сделать Datagridviewrow, используя значение из datarow?