在预定义的索引处向数据表中添加数据行

11

我有一张只有一列的数据表:

this.callsTable.Columns.Add("Call", typeof(String));

我想要向数据表格中添加一行,但是希望在指定的位置插入,注释中的数字即为期望的索引:

this.callsTable.Rows.Add("Legs"); //11

更新:

  • 必须能够处理输入有数百行具有唯一索引的数据。
  • 无论表中是否有足够的行数供插入函数使用,索引必须是我定义的。
1个回答

28

您可以使用DataTable.Rows.InsertAt方法。

DataRow dr = callsTable.NewRow(); //Create New Row
dr["Call"] = "Legs";              // Set Column Value
callsTable.Rows.InsertAt(dr, 11); // InsertAt specified position

参见:DataRowCollection.InsertAt 方法

如果 pos 参数指定的值大于集合中的行数,则新行将被添加到末尾。


如果我想为几百行定义特定的索引,该怎么办?我不想为每一行都做同样的事情,也不想每次都定义一个不同的Datarow变量,这样还要每次都给它取一个新名字。此外,无论表格中是否有足够的行,我希望索引是我选择的。 - RSM
2
@RyanMurphy,InsertAt只接受DataRow作为参数,所以你必须使用它。但是你可以在迭代中重复使用变量dr - Habib
假设我有以下代码: DataRow dr = callsTable.NewRow(); dr["Call"] = "Legs"; callsTable.Rows.InsertAt(dr, 11); dr["Call"] = "Arms"; callsTable.Rows.InsertAt(dr, 9);它提示说这一行已经存在于数据表中。 - RSM
2
@RyanMurphy,在再次使用“dr”之前,您需要执行dr = dt.NewRow(); - Habib
@ Habib,由于某些情况,有时我只返回没有数据的字段(列),因此 DT.NewRow() 会抛出对象引用的异常。 - Thrainder

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