Как выделить строку в DataGridView красным цветом?

Как выделить строку в DataGridView?

На некоторых форумах очень часто можно встретить вопрос: как выделить строку в DataGridView? На самом деле сделать это очень просто, например, предположим, что у нас есть небольшая таблица, которая содержит всего четыре строки (записи) и нам в качестве задачи необходимо выделить третью строку красным цветом.

Решение:

dataGridView1.Rows[2].DefaultCellStyle.BackColor = Color.Red;

Результат:

строка выделена красным

Сначала с помощью свойства Rows определяем, какую строку мы хотим выделить в DataGridView, для этого просто указываем индекс нужной нам строки. Не забывайте, что индекс первого элемента начинается с нуля, поэтому вместо числа три, мы указываем число два. Затем, используя свойство DefaultCellStyle, которое позволяет задать стиль для любой ячейки, мы получаем доступ к свойству BackColor, которое в свою очередь позволяет нам с помощью перечисления Color выделить каждую ячейку красным цветом, в результате чего мы получаем выделенную строку. Вот собственно и всё.

Update

В комментариях Андрей привел способ, который позволяет в DataGridView (dgv) по умолчанию выделить всю строку, а не отдельную ячейку.

dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

Так же Вы можете задать или установить данное значение с помощью панели свойств.

панель свойств

результат

выделенная строка

Читайте также:

12 комментариев

  1. Андрей says:

    Можно и проще сделать — установить свойство SelectionMode у DataGridView в «FullRowSelect».

  2. В статье подразумевалось выделение строки цветом, но всё равно я думаю, стоит добавить данное решение, возможно, кому-то пригодится.

  3. Здравствуйте. Не подскажите, как из выделеной строки получить данные, допустим из столбца id, выбрать данные с этим id из другой таблицы в базе и загрузить набор данных во вторую панель в этом же окне?

  4. 1. «как из выделеной строки получить данные» — какой способ получения должен использоваться, например: при нажатии мышки, выделение строки?

    2. Вот пример, как можно выбрать данные из базы данных Mysql пример

    3. Вывод можно выполнить, например следующим образом:

    dataGridView2.DataSource = возвращаемое значение из пункта №2
  5. Из dataGridView1, в выделеной строке, по клику мышкой, в первом столбце взять значение и выбрать с ним все строки из другой таблицы базы MySQL, а в dataGridView2 в этом же окне выгрузить результат.
    Второй месяц пытаюсь писать программы. Благодаря вашему примеру смог подключится к базе MySQL, выбрать данные из таблицы… двое суток пытаюсь столбцы в dataGridView подписать, вроде получилось.

  6. Если клик мышкой, то это событие CellClick.

    Пример:

    private void dataGridView1_CellClick(object sender,
    DataGridViewCellEventArgs e)
    {
    if (dgv1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)
    {
    //1. Получаем выбранное значение в datagridview1
    string selectValue = dgv1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
    /*2. делаем выборку из базы данных Mysql,
    возвращается объект типа DataTable (dt)*/
    ....
    //3. Выводим результат в dataGridView2
    dataGridView2.DataSource = dt;
    }
    }
  7. Значение почему-то пустое, выбирает записи из базы MySQL со значением ноль.
    Не могу понять, уже мозг сломал.

  8. «Значение почему-то пустое» — при выборе значения в datagridview1?
    «выбирает записи из базы MySQL со значением ноль» — неверный sql запрос.

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

  10. string queryString = @"SELECT idn_record, idn_parent_record
    FROM post_avicon02
    WHERE idn_parent_record IN ('selectValue')";

    selectValue — это не переменная, а значение!

    string queryString = @" SELECT idn_record, idn_parent_record
    FROM post_avicon02
    WHERE idn_parent_record IN ('" + selectValue+ "')";

    Теперь selectValue — это переменная.

    Но, таким образом уже давно никто запросы не отправляет, как минимум
    нужно использовать параметризованный запрос:

    пример в самом низу

    либо написать хранимую процедуру пример

  11. Спасибо большое! Второй пример с переменной в запросе — все заработало, только кликать надо по самому значению, просто клик по ячейке не работает.
    Ссылка на пример с написанием хранимых процедур не работает, отсылает на главную страницу сайта.

  12. исправил, теперь должна открываться.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*