0

У меня есть данные в DataGridView — таблица из бд. На основе этих данных у меня формируется таблица и определённые её ячейки закрашиваются определённым цветом.

Если пользователь решит gridview отсортировать по какому-либо столбцу (ткнув на его заголовок) данные сортируются, как положенр, но цвет закрашенных ранее ячеек теряется.

Как мне это исправить? Как мне отследить или поймать сортировку, чтобы закрашенные ячейки до сортировки, закрашивались тем же цветом и после сортировки. Какое событие ловить и желательно показать.

  • А как именно и когда ячейки первоначально закрашиваются? Но, вообще, используйте событие CellFormatting - в нём и производите закраску ячеек. – Alexander Petrov Oct 30 '18 at 06:54
  • Пользователь выбирает запрос и через SqlCommandBuilder выполняется соединение. Форматируются данные (закрашиваются) и выводятся на экран. Проблема состоит в том, что программа не знает, какие ячейки в какой цвет закрашивать после сортировки. – Алексей Цуров Oct 30 '18 at 07:06
  • 1
    Меньше слов - больше кода. | Программа же откуда-то знает, как окрасить ячейки сразу после загрузки данных из БД, по какому-то условию. Вот это условие и перенесите в CellFormatting. – Alexander Petrov Oct 30 '18 at 07:15
  • Спасибо, на основе твоего совета сделал. CellFormatting вызывается каждый раз, когда изменяется ячейка, а у меня их 75к и ещё в зависимости от параметров изменяются каждый раз. Сделал так. После события Sorted вызываю отрисовку снова. – Алексей Цуров Oct 30 '18 at 07:48
  • 1
    CellFormatting будет вызываться только у видимых ячеек, так что общее количество не страшно. – Alexander Petrov Oct 30 '18 at 08:01
  • 1
    Кстати, может пригодится: двойная буферизация датагрида. И виртуализацию хорошо бы задействовать, потому как 75к - это довольно много, не стоит выводить сразу все. – Alexander Petrov Oct 30 '18 at 08:03

1 Answers1

1

Решил проблемы, вызвав отрисовку в событии Sorted