Пытаюсь по нажатию кнопки обработать все строки в гриде. В моем случае есть грид с сообщениями
Пытаюсь "прочитать" все сообщения по нажатию кнопки
private void readAllBtn_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow item in postsDataGridView.Rows)
{
ReadMessage();
}
GetData();
}
Метод для отметки сообщений как прочитанные
private void ReadMessage()
{
try
{
if (postsDataGridView.CurrentRow.Cells.Count > 0)
{
cs = cs.LoadFile();
using (SqlConnection conn = new SqlConnection(cs.ToString()))
{
try
{
conn.Open();
int rowindex = postsDataGridView.CurrentCell.RowIndex;
int selectId = Convert.ToInt32(postsDataGridView.Rows[rowindex].Cells[0].Value);
string currentStream = (string)postsDataGridView.Rows[rowindex].Cells[5].Value; //Получаем в переменную направление сообщения
string querryRead = String.Format("update sta_Messages set \"GetDate\" = CAST(GETDATE() AS BINARY(8)) where \"id\" = {0}", selectId);
if (currentStream == "вхідне") //Проверка, если входящее - сообщение прочитано
{
SqlCommand command = new SqlCommand(querryRead, conn);
SqlDataReader reader = command.ExecuteReader();
//MessageBox.Show("Повідомлення прочитано");
}
else
MessageBox.Show("Відмічати можна тільки вхідні повідомлення");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
else MessageBox.Show("Виберіть повідомлення");
}
catch { }
}
Метод GetData();
нужен для обновления грида после чтения сообщений.
Проблема заключается в том, что при нажатии на кнопку читается только первое сообщение, остальные остаются, в отладчике показывает что в цикле проходится по всем строкам, но по факту обрабатывается только первая.
Итого после нажатия выход такой
Не могу понять в чем причина. спасибо за помощь!
Вы зачем-то прогоняете многократной цикл, вызывая один и тот же метод, который не имеет параметров:
foreach (DataGridViewRow item in postsDataGridView.Rows)
{
ReadMessage();
}
А тут, как я понимаю:
int rowindex = postsDataGridView.CurrentCell.RowIndex;
Выбирается текущая строка, которая выделена.
Наверное, вам нужно в ReadMessage
добавить параметр и передавать туда DataGridViewRow
и с ней работать.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Имеется сервис, который собирает данные и отправляет в другой сервисСервис работает в докер-контейнере
Необходимо создать два поля формы, чтобы в одно поле ввести, например, 1000 строк и во второе поле 1000 строк, нажать на кнопку "Выполнить"