Как добавить новый DataRow в DataTable?


У меня есть DataGridView привязанный к a DataTable (DataTable привязан к базе данных). Мне нужно добавить DataRow к DataTable. Я пытаюсь использовать следующий код:

dataGridViewPersons.BindingContext[table].EndCurrentEdit();
DataRow row = table.NewRow();

for (int i = 0; i < 28; i++)
{
    row[i] = i.ToString();
}

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

Заранее благодарю вас.

8 33

8 ответов:

Вы можете попробовать с этим кодом-на основе Rows.Add method

DataTable table = new DataTable();
DataRow row = table.NewRow();
table.Rows.Add(row);

Ссылка: https://msdn.microsoft.com/en-us/library/9yfsd47w.aspx

Я нашел примеры dotnetperls на DataRow очень полезно. Фрагмент кода для new DataTable оттуда:

static DataTable GetTable()
{
    // Here we create a DataTable with four columns.
    DataTable table = new DataTable();
    table.Columns.Add("Weight", typeof(int));
    table.Columns.Add("Name", typeof(string));
    table.Columns.Add("Breed", typeof(string));
    table.Columns.Add("Date", typeof(DateTime));

    // Here we add five DataRows.
    table.Rows.Add(57, "Koko", "Shar Pei", DateTime.Now);
    table.Rows.Add(130, "Fido", "Bullmastiff", DateTime.Now);
    table.Rows.Add(92, "Alex", "Anatolian Shepherd Dog", DateTime.Now);
    table.Rows.Add(25, "Charles", "Cavalier King Charles Spaniel", DateTime.Now);
    table.Rows.Add(7, "Candy", "Yorkshire Terrier", DateTime.Now);

    return table;
}

//َСоздание новой строки со структурой таблицы:

DataTable table = new DataTable();
DataRow row = table.NewRow();
table.Rows.Add(row);

//присвоение значений столбцам строки (предполагается, что в этой строке 28 столбцов):

for (int i = 0; i < 28; i++)
{
    row[i] = i.ToString();
}

Вы должны добавить строку явно в таблицу

table.Rows.Add(row);

Если нужно скопировать из другой таблицы, то сначала нужно скопировать структуру:

DataTable copyDt = existentDt.Clone();
copyDt.ImportRow(existentDt.Rows[0]);

Это работает для меня:

var table = new DataTable();
table.Rows.Add();

Попробуйте table.Rows.add(row); после вашего утверждения for.

    GRV.DataSource = Class1.DataTable;
            GRV.DataBind();

Class1.GRV.Rows[e.RowIndex].Delete();
        GRV.DataSource = Class1.DataTable;
        GRV.DataBind();