我有这个循环,我用它来获取gridview所有行中所有单元格的值,然后将其写入csv文件。我的循环看起来像这样:
string filename = @"C:\Users\gurdip.sira\Documents\Visual Studio 2008\WebSites\Supressions\APP_DATA\surpressionstest.csv";
StreamWriter sWriter = new StreamWriter(filename);
string Str = string.Empty;
string headertext = "";
sWriter.WriteLine(headertext);
for (int i = 0; i <= (this.GridView3.Rows.Count - 1); i++)
{
for (int j = 0; j <= (this.GridView3.Columns.Count - 1); j++)
{
Str = this.GridView3.Rows[i].Cells[j].Text.ToString();
sWriter.Write(Str);
}
sWriter.WriteLine();
}
sWriter.Close();
这段代码的问题在于,当单步执行时,第二个循环(通过列的循环)不会开始,因为调试器没有触及此循环,因此我的文件为空。
关于导致这种情况的任何想法?代码本身看起来很好。
由于
答案 0 :(得分:1)
我认为内部循环应该访问 Cells ,而不是列:
for (int i = 0; i <= (this.GridView3.Rows.Count - 1); i++)
{
for (int j = 0; j <= (this.GridView3.Rows[i].Cells.Count - 1); j++)
{
Str = this.GridView3.Rows[i].Cells[j].Text.ToString();
sWriter.Write(Str);
}
}
答案 1 :(得分:0)
添加行号,如果我正确理解你的问题,你会说在调试时,你永远不会到达第8行。如果是这样的话那么我希望你的问题是当你真正通过循环在gridview中没有行。为了弄清楚为什么会这样,我建议您查看您在页面的后期周期中的位置
string filename = @"C:\Users\gurdip.sira\Documents\Visual Studio 2008\WebSites\Supressions\APP_DATA\surpressionstest.csv";//1
StreamWriter sWriter = new StreamWriter(filename);//2
string Str = string.Empty;//3
string headertext = ""; //4
sWriter.WriteLine(headertext); //5
for (int i = 0; i <= (this.GridView3.Rows.Count - 1); i++) //6
{ //7
for (int j = 0; j <= (this.GridView3.Columns.Count - 1); j++) //8
{ //9
Str = this.GridView3.Rows[i].Cells[j].Text.ToString();//10
sWriter.Write(Str);//11
}//12
sWriter.WriteLine();//13
}//14
sWriter.Close();//15
}//16