Как изменить цвет строки в datagridview без зацикливания в datatable - PullRequest
0 голосов
/ 11 января 2019

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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...