【发布时间】:2018-01-16 19:54:12
【问题描述】:
我有一个数据表,我想使用 for 循环向其中添加行,但是当我这样做时,循环卡住并且不起作用。
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i][1].ToString() == "")
{
DataRow newRow = dt.NewRow();
newRow[1] = "data";
dt.Rows.InsertAt(newRow, i);
}
}
【问题讨论】:
-
如果这样不断增加行数,这不是无限循环吗?
-
是的,但我仅在特定单元格为空白时才添加行。那么我该如何解决呢?
-
InsertAt不会替换i处的行,而是在那里添加一个新行。为什么不只是dt.Rows[i] = newRow;?或者真的只是dt.Rows[i][1] = "data";,除非您希望将其他行更改为默认值。 -
如果您有一行包含一个空单元格,您的代码将创建一个新行并将其插入到
i的行之前。行计数增加,带有空白单元格的同一行现在位于i+1。在下一次通过时,你做同样的事情。 -
您的代码无法运行。如果您的表包含零行,则 dt.Rows.Count = 0。因此 i = 0 不小于零,因此您永远不会进入 for 循环。