如何向 DataTable 中添加新的 DataRow?

46

我有一个绑定到 DataTable DataTable 绑定到数据库)的 DataGridView 。我需要向 DataTable 添加 DataRow 。我正在尝试使用以下代码:

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

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

但是它不起作用,DataGridView 从未添加新行。请告诉我,我该如何修复我的代码?

提前感谢您。


3
http://www.dotnetperls.com/datarow - NoWar
8个回答

73

33

我发现在dotnetperls上的DataRow示例非常有用。从那里获取新的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;
}

10

//使用表格的结构创建一个新行:

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

//给行的列(这行应该有28列)赋值:

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

3
您需要明确地向表中添加行。请参阅此链接来了解更多详情。
table.Rows.Add(row);

2
如果需要从另一个表复制数据,那么首先需要复制结构:
DataTable copyDt = existentDt.Clone();
copyDt.ImportRow(existentDt.Rows[0]);

1
这对我有效:
var table = new DataTable();
table.Rows.Add();

0
尝试在你的`for`语句之后添加`table.Rows.add(row);`。

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

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

5
请尽量避免只是将代码作为答案进行提交,并尝试解释它的作用和原因。对于没有相关编程经验的人来说,您的代码可能不太明显。请编辑您的答案以包括澄清、上下文,并尝试在您的答案中提到任何限制、假设或简化。 - Sᴀᴍ Onᴇᴌᴀ
1
这段代码不完整,与数据行似乎没有明显的关系。 - jpaugh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接