100分请大家帮小弟我看下为什么小弟我这个for循环只能一次,是语法异常吗

100分请大家帮我看下为什么我这个for循环只能一次,是语法错误吗?
WebService shuju = new WebService();

  DataTable table;
  protected void Page_Load(object sender, EventArgs e)
  {
  if (!Page.IsPostBack)
  {
  catrory();
  }
  }

 
  private void catrory()
  {
   
  string sql1 = "select catname,catid from sc_cat where fid=0 ";
  table = shuju.ExcuteSelect(sql1);
  StringBuilder cat = new StringBuilder();
   
  cat.Append("<div class=\"padtb8\">");
  for (int i = 0; i < table.Rows.Count; i++)
  {

  cat.Append("<div class=\"f fblod\" id=\"sgc" + table.Rows[i]["catid"].ToString() + "\" onclick=\"w('gc" + table.Rows[i]["catid"].ToString() + "')\">");
  cat.Append("<a href=\"product_lm" + table.Rows[i]["catid"].ToString() + ".html\">");
  cat.Append("" + table.Rows[i]["catname"].ToString() + "</a></div>");
  cat.Append("<div class=\"ps\" id=\"gc" + table.Rows[i]["catid"].ToString() + "\" style=\"display:block\">");

  table = shuju.ExcuteSelect("select catname,catid from sc_cat where fid=" + table.Rows[i]["catid"].ToString() + " ");
   
  for (int n = 0; n <table.Rows.Count; n++)
  {
  cat.Append("<div id=\"sfgc" + table.Rows[n]["catid"].ToString() + "\" class=\"f\" onclick=\"k('fgc" + table.Rows[n]["catid"].ToString() + "')\">");
  cat.Append("" + table.Rows[n]["catname"].ToString() + "</div>");
  cat.Append("<div class=\"ps\" id=\"fgc" + table.Rows[n]["catid"].ToString() + "\">");

  table = shuju.ExcuteSelect("select catname,catid from sc_cat where fid=" + table.Rows[n]["catid"].ToString() + " ");
  if (table.Rows.Count > 0)
  {
  for (int m = 0; m < table.Rows.Count; m++)
  {
  cat.Append("<div class=\"b\">");
  cat.Append("<a href=\"product_lm" + table.Rows[m]["catid"].ToString() + ".html\">");
  cat.Append("" + table.Rows[m]["catname"].ToString() + "</a></div>");
  }

  }
  cat.Append("</div>");
  }
  cat.Append("</div>");
  }
  cat.Append("</div>");
  this.catr.Text = cat.ToString();

   
  }


------解决方案--------------------
table = shuju.ExcuteSelect("select catname,catid from sc_cat where fid=" + table.Rows[i]["catid"].ToString() + " "); 

不要在循环内部改变循环的终止条件.
table = shuju.ExcuteSelect("select catname,catid from sc_cat where fid=" + table.Rows[i]["catid"].ToString() + " "); 
这条语句会改变table.count的值.
如果fid是主键的话你这样只能选出一条记录,所以只执行一次.
------解决方案--------------------
还有个问题 
  
 DataTable table; 在一个函数里面你把table 赋了3次值

有可能你第一次 table.Rows.Count == 5
第二次的时候 table.Rows.Count== 3
第三次的时候 table.Rows.Count == 1
等你在FOR 循环执行着句的时候 for (int i = 0; i < table.Rows.Count; i++) 
i= 1 
如果 table.rows.count也 =1 (这个table.rows.count 的值是你第三次取的值!)
那么当然只循环一次

 所以这里你需要把 三次的数据保存在名称不相同的 datatable 集合内!


也不知道我说清楚没!
------解决方案--------------------
C# code
 

  private void catrory()
  {
 
    string sql1 = "select catname,catid from sc_cat where fid=0 ";
    table = shuju.ExcuteSelect(sql1);
    StringBuilder cat = new StringBuilder();
       
  cat.Append(" <div class=\"padtb8\">");
  for (int i = 0; i < table.Rows.Count; i++)
  {

    cat.Append(" <div class=\"f fblod\" id=\"sgc" + table.Rows[i]["catid"].ToString() + "\" onclick=\"w('gc" + table.Rows[i]["catid"].ToString() + "')\">");
    cat.Append(" <a href=\"product_lm" + table.Rows[i]["catid"].ToString() + ".html\">");
    cat.Append("" + table.Rows[i]["catname"].ToString() + " </a> </div>");
    cat.Append(" <div class=\"ps\" id=\"gc" + table.Rows[i]["catid"].ToString() + "\" style=\"display:block\">");

    table = shuju.ExcuteSelect("select catname,catid from sc_cat where fid=" + table.Rows[i]["catid"].ToString() + " ");
   
      for (int n = 0; n <table.Rows.Count; n++)
      {
        cat.Append(" <div id=\"sfgc" + table.Rows[n]["catid"].ToString() + "\" class=\"f\" onclick=\"k('fgc" + table.Rows[n]["catid"].ToString() + "')\">");
        cat.Append("" + table.Rows[n]["catname"].ToString() + " </div>");
        cat.Append(" <div class=\"ps\" id=\"fgc" + table.Rows[n]["catid"].ToString() + "\">");
        //下面这条语句会使table.count的值改变,如果没有这记录的话,table.count的值会变为0,再一次执行循环判断时就会退出循环.
        table = shuju.ExcuteSelect("select catname,catid from sc_cat where fid=" + table.Rows[n]["catid"].ToString() + " ");
        if (table.Rows.Count > 0)
        {
          for (int m = 0; m < table.Rows.Count; m++)
          {
            cat.Append(" <div class=\"b\">");
            cat.Append(" <a href=\"product_lm" + table.Rows[m]["catid"].ToString() + ".html\">");
            cat.Append("" + table.Rows[m]["catname"].ToString() + " </a> </div>");
          }

        }
        cat.Append(" </div>");
      }
    cat.Append(" </div>");
  }
  cat.Append(" </div>");
  this.catr.Text = cat.ToString();

   
  }

------解决方案--------------------
C# code

table = shuju.ExcuteSelect("select catname,catid from sc_cat where fid=" + table.Rows[i]["catid"].ToString() + " ");