我有一些代码循环遍历我的数据表,我很好地使用了item
变量。但我的问题是i
需要迭代,它需要从它上面的最后一个数字+ 1开始。 foreach
完成后,它需要从循环中退出。
private void button2_Click(object sender, EventArgs e)
{
CreateExcelDoc excell_app = new CreateExcelDoc();
//creates the main header
COLUMNSTableAdapter adapterTableName = new COLUMNSTableAdapter();
DataTable table = adapterTableName.GetData(tableName); // Get the data table.
foreach (DataRow row in table.Rows) // Loop over the rows.
{
foreach (var item in row.ItemArray) // Loop over the items.
{
for (int i = 1; i < 30; i++)
{
excell_app.createHeaders(1, 1, "" + item + "", i, i, 1, "black", false, 10, "n");
}
}
}
}
答案 0 :(得分:3)
我的代码在到达数据表的下一行之前会循环30次。这是错误的,我试图将计数定义为数据表中项目的计数
那你为什么不像这样使用一个for循环?
for(int i = 1; i< row.ItemArray.Length+1; i++)
{
var item = row.ItemArray[i];
excell_app.createHeaders(1, 1, "" + item + "", i, i, 1, "black", false, 10, "n");
}
答案 1 :(得分:2)
编辑:
每次有新项目时,所有
i
需要做的就是递增。一旦没有更多的项目,那么我必须停止递增。在这种情况下,我需要写一些东西,它会阻止它返回到新的行..
int i = 0;
foreach (DataRow row in table.Rows) // Loop over the rows.
{
foreach (var item in row.ItemArrai) // Loop over the items.
{
i++;
for (int j = 1; j < 30; j++)
{
excell_app.createHeaders(1, 1, "" + item + "", j, j, 1, "black", false, 10, "n");
}
}
}
Console.WriteLine(i);
答案 2 :(得分:2)
发表评论后,您可以使用另一个变量:
正如@Grundy在评论中建议的那样 - 如果你使用数组,你可以使用它的长度:
int j = 1;
foreach (DataRow row in table.Rows) // Loop over the rows.
{
for (int i = 0; i < row.ItemArray.Length; i++, j++)
{
excell_app.createHeaders(1, 1, "" + row.ItemArray[i] + "", j, j, 1, "black", false, 10, "n");
}
}