2013-11-20 1 views
0

У меня проблема с событием CellFormatting в datagridview.Запрос MySQL в событии CellFormatting в datagridview работает медленно, используя vb.net

Каждый раз, когда я добавляю следующие коды, он работает очень медленно.

disconnect() 
connect() 
cmd=New Odbc.OdbcCommand("SELECT idnum FROM tblmanhours GROUP BY idnum HAVING SUM (basic) > 48", con) 
dr=cmd.ExecuteReader 

While dr.Read 
    If Me.dgvmanhours.Columns(e.ColumnIndex).HeaderText = "ID_No" Then 
    If e.value = dr.GetString(o) Then 
     e.CellStyle.BackColor = Color.Crimson 
     e.CellStyle.ForeColor = Color.White 
    End If 
    End If 
End While 

Что я хотел сделать, это окрасить ячейки, возвращаемые запросом. Вывод вышеуказанных кодов был правильным, но он работает очень медленно каждый раз, когда я его отлаживаю. И всякий раз, когда я прокомментировал эти коды, он работает быстро.

Пожалуйста, помогите мне.

Заранее спасибо.

ответ

0

Похоже, что перерисовывание при каждом изменении замедляет работу, поэтому это может помочь.

Me.dgvmanhours.SuspendLayout() 
While dr.Read 
    ... 
End While 
Me.dgvmanhours.ResumeLayout() 
0

Кэш-результат запроса в DataTable, а затем запрос локального datatable из события.

Если все, что вы делаете, это настройка цвета, просто сделайте один проход через DGV (или строку/ячейку) при каждом изменении данных. dgv(10, 10).Style.BackColor = Color.Crimson

Смежные вопросы