将gridview写入文件不适用于嵌套for循环

时间:2008-10-24 14:24:27

标签: c# asp.net visual-studio

我有这个循环,我用它来获取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();

这段代码的问题在于,当单步执行时,第二个循环(通过列的循环)不会开始,因为调试器没有触及此循环,因此我的文件为空。

关于导致这种情况的任何想法?代码本身看起来很好。

由于

2 个答案:

答案 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