Как добавить строку в DataGridView в языке c#

Как добавить новую строку в DataGridView?

Из этой статьи Вы узнаете, как добавить строку в DataGridView.

И так, как обычно для начала создадим простое Windows Forms приложение на языке c#, после чего добавим на форму: DataGridView (dgv), кнопку и textBox.

Windows Forms Application

Чтобы добавить новую строку в DataGridView нужно воспользоваться методом Add, например:

private void button1_Click(object sender, EventArgs e)
{
 dgv.Rows.Add(textBox1.Text);
}

Но, если сейчас выполнить данный код, то на экране появиться сообщение об ошибке: «No row can be added to a DataGridView control that does not have columns. Columns must be added first».

Проблема заключается в том, что у нас нет колонок, исправим это.

private void button1_Click(object sender, EventArgs e)
{
//создаём и добавляем две колонки
dgv.Columns.Add("ID", "Id");
dgv.Columns.Add("Name", "Name");
}

Первый параметр — это имя колонки, а второй — это название колонки, которое будет отображаться в DataGridView.

Снова попробуем добавить строку в DataGridView.

private void button1_Click(object sender, EventArgs e)
{
//1. Создаём и добавляем колонки
//2. Добавляем строку
int rowNumber = dgv.Rows.Add();
//3. Заполняем ячейки
dgv.Rows[rowNumber].Cells["ID"].Value = rowNumber;
dgv.Rows[rowNumber].Cells[1].Value = textBox1.Text;
}

Либо можно сразу же передать значения в качестве параметров, например:

dgv.Rows.Add(0, textBox1.Text);

результат

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

Теперь всё в порядке задача решена.

Здесь стоит обратить внимание на один важный момент. По умолчанию в DataGridView рядом с пунктом Enable Adding включена галочка, которая даёт возможность пользователям вручную добавлять строки прямо в самом элементе DataGridView.

Enable Adding

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

Rows

Поэтому в данном примере мы можем вообще не вызывать метод Add, а сразу же заполнить ячейки уже существующей строки нужными нам значениями, например:

private void button1_Click(object sender, EventArgs e)
{
//1. Добавляем колонки
//2. Строка уже добавлена!
//3. Заполняем ячейки
dgv.Rows[0].Cells["ID"].Value = 1;
dgv.Rows[0].Cells[1].Value = textBox1.Text;
}

На этом всё, если есть какие-то вопросы, то оставляйте их в комментариях.

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

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

  1. Очень долго искала именно такой способ решения! Огромное спасибо!!!!!!!! Интересует по dgv еще вот такая проблемка, к примеру: в form1 — textbox, а в form2-dgv. Вопрос: каким способом можно передать значение из texbox form1 в form2 dgv, в определенную ячейку? и наоборот, взять значение из ячейки dgv и передать в texbox?

  2. Здраствуйте. как изменить значения БД через dataGridView? через tableAdapterUpdate выдает ошибку про нарушение параллелизма…

  3. Добавьте код

  4. Николай says:

    Добрый, если тема еще жива: а как можно в ячейке (во всех ячейках второго столбца, например dgv.Rows[0].Cells[1].Value) отобразить и отработать переход по гиперссылке? Скажем, оставив Text = «Яндех», а в Link положить что-то вроде «h_t_t_p://w_w_w.ya.ru», что бы при нажатии на этот текст в браузере по умолчанию открывалась указанная ссылка?
    Как не пробовал, мне ругается на несоответствие типов данных…

  5. Класс для работы с гиперссылками DataGridViewLinkColumn.
    А для перехода по ссылке, как вариант можно сделать так:

    Process.Start("Firefox.exe", "сюда url передаём");

    Этот код нужно поместить в обработчике события, например cellClick или что-то иное.

Leave a Reply

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

*