Member 13353619 Ответов: 2

Изменение цвета строки, если значение столбца из datagridview равно true.


Как я могу использовать столбец в моей базе данных, показанный в моем datagridview с именем "posted" в условном операторе, который при значении true/1 должен изменить цвет строк на красный.

Что я уже пробовал:

по каждому элементу (ячейки datagridviewrow Myrow в dataGridView1.Строк)
{
если (преобразовать.ToInt32(Myrow .Ячейки ["posted"]. Value==1)
{
Майроу .DefaultCellStyle.BackColor = Цвет.Красный;
}
еще
{
Майроу .DefaultCellStyle.BackColor = Цвет.Зеленый;
}
}



Я также пытался использовать:
если (Myrow.Ячейки ["posted"]. Value==1)



Он работает, но все строки красные. и он игнорирует значение столбца posted, даже если оно истинно или ложно.

2 Ответов

Рейтинг:
2

Kornfeld Eliyahu Peter

Практическое руководство.Событие CellFormatting (Системы.Окна.Формы)[^]
Вы должны попробовать это...

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
  DataGridViewRow oRow = dataGridView1.Rows[e.RowIndex];

  if(dataGridView1.Columns[e.ColumnIndex].Name == "posted" && e.Value == 1) {
    oRow.DefaultCellStyle.BackColor = Color.Red;
  }
  else
  {
    oRow.DefaultCellStyle.BackColor = Color.Green; 
  }
}


Рейтинг:
1

RickZeeland

Это устанавливает цвет одной ячейки:

private void myDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex == 1)
            {
                var check = myDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;

                if (check != null && (bool)check == false)
                {
                    e.CellStyle.BackColor = Color.Red;
                }
            }
        }