В datagridview у меня есть счетчики, которые обновляются с нуля посредством входящих и исходящих сообщений. У этих сообщений есть типы, поэтому тип A будет увеличиваться, если сообщение типа A было отправлено либо внутрь, либо снаружи. Я разрешил сортировку пользователей, чтобы пользователь мог видеть, какие типы сообщений отправляются или получают меньше всего или больше всего. Однако, поскольку я обновляю конкретную ячейку в строке сообщения, после сортировки строк будет другое число и, следовательно, вместо этого будет изменено значение другого счетчика. Например,
У меня есть типы A, B и C.
У A 4 сообщения, у B - 6 сообщений, у C - 32 сообщения.
Допустим, сейчас поступает сообщение типа C, но пользователь сортирует столбцы, и тогда порядок будет следующим:
С 32 В 6 А 4.
Поскольку это порядок, моя проблема в том, что я обновляю значение ячейки. Итак, в сетке данных я бы обновил значение ячейки [1, 2]. Это означает, что тогда у A будет счетчик 5, а у C по-прежнему будет счетчик 32, что неверно. Я знаю, что тип сообщения - C, поэтому есть ли способ индексировать строки, чтобы я точно знал, какое значение ячейки строки нужно обновить, а не обновлять саму ячейку? Это приводит к довольно большой ошибке, и строки не имеют имен, поэтому я не знаю, как подойти к этой проблеме. Я подумываю использовать имя ячейки заголовка и установить ячейку заголовка строк на A, B, C, и всякий раз, когда появляется тип C, я ищу, в какой строке находится ячейка заголовка 'C', а затем перехожу к столбцу и обновите номер ячейки.
Любое понимание приветствуется. Большое спасибо!
.NET 3.5 с пакетом обновления 1 (SP1). -tf.rz
2 ответа
Если ваш DataGridView не привязан к какому-либо DataSource a> вы должны это сделать. Таким образом, вы можете обновить свой DataGridView DataSource, а DataGridView позаботится об обновлении правильных ячеек для вас.
Если ваш DataGridView привязан к DataSource, вам необходимо обновить DataSource вместо DataGridView напрямую.
Вам нужно искать строки после каждого сообщения. Самый простой способ - итерация
foreach (DataGridViewRow row in dataGridView1.Rows)
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.