2013-10-03 68 views
0

循环迭代问题,我有一个代码虽然在asp.net

public void LoadProducts() 
    { 
     //StringBuilder sbProducts = new StringBuilder(); 
     string qry = "Select * from tbl_Products order by ProductId"; 
     SqlCommand cmd = new SqlCommand(qry, con); 
     con.Open(); 
     sbProducts="<table cellpadding='0' align='center' height: '250px'; width: '1000px'><tr>"; 

     using (SqlDataReader sdr = cmd.ExecuteReader()) 
     { 
      while (sdr.Read()) 
      { 
       sbProducts = sbProducts + "<form action='ProductDetail.aspx'><td style='border-right:1px solid 
blue;border-top:1px solid blue;border-bottom:1px solid 
blue;border-left:1px solid blue;text-align:center;width:300px'>"; 
       Session["code"] = sdr[0].ToString(); 
       sbProducts = sbProducts + "<img src= " + sdr[5].ToString().Substring(2) + " width=120px height=150px><br>"; 
       sbProducts = sbProducts + sdr[0].ToString() + sdr[2].ToString() + "<br>"; 
       sbProducts = sbProducts + sdr[3].ToString() + "<br>"; 
       sbProducts = sbProducts + "Rs: " + sdr[4].ToString(); 
       sbProducts = sbProducts + "<br><input type='hidden' name='pid' value='" + Session["code"] + "'><input type='submit' 
value='View Details'>"; 
       sbProducts = sbProducts + "</td></form>"; 
      } 
      sbProducts = sbProducts + "</table>"; 
      CellTwo = sbProducts.ToString(); 
      con.Close(); 
     } 
    } 

它包含了需要与每个迭代,但是,第一次迭代重复一个形式,而循环缺少这种形式(HTML)元素其余的迭代它工作正常。 我不知道问题是什么,因为while循环在第一次迭代中缺少表单元素。

+0

您的结构格式不正确。 – siddhesh

回答

1

分享我们您的HTML输出请
通过对事物的外观,你会产生这样的事:

<table> 
    <tr> 
    <form> 
     <td></td> 
    </form> 
</table> 

你不关闭tr和形式应该是在TD,不在tr和td之间。
结果应该是这样的:

<table> 
    <tr> 
    <td> 
     <form></form> 
    </td> 
    </tr> 
</table> 
+0

'请将您的html输出分享给我们'应该是对OP问题的评论,而不是引导回答。但是你的回答是一个有效的开始。 – ps2goat

+0

想要确保我正确地解释他的代码,但我确实认为这是他的问题的解决方案。浏览器倾向于使用结构不合理的表格来执行奇怪的事情 – Kristof

0

您可以使用这样

public void LoadProducts() 
    { 
     //StringBuilder sbProducts = new StringBuilder(); 
     string qry = "Select * from tbl_Products order by ProductId"; 
     SqlCommand cmd = new SqlCommand(qry, con); 
     con.Open(); 
     sbProducts="<table cellpadding='0' align='center' height: '250px'; width: '1000px'><tr>"; 
     int counter=0; 
     using (SqlDataReader sdr = cmd.ExecuteReader()) 
     { 
      while (sdr.Read()) 
      { 
       if(counter++=0) 
       { 
       sbProducts = sbProducts + "<form action='ProductDetail.aspx'><td style='border-right:1px solid 
blue;border-top:1px solid blue;border-bottom:1px solid 
blue;border-left:1px solid blue;text-align:center;width:300px'>"; 
       } 
       sbProducts = sbProducts +"<tr>"; 
       Session["code"] = sdr[0].ToString(); 
       sbProducts = sbProducts + "<img src= " + sdr[5].ToString().Substring(2) + " width=120px height=150px><br>"; 
       sbProducts = sbProducts + sdr[0].ToString() + sdr[2].ToString() + "<br>"; 
       sbProducts = sbProducts + sdr[3].ToString() + "<br>"; 
       sbProducts = sbProducts + "Rs: " + sdr[4].ToString(); 
       sbProducts = sbProducts + "<br><input type='hidden' name='pid' value='" + Session["code"] + "'><input type='submit' 
value='View Details'>"; 
       sbProducts = sbProducts + "</td>"; 
       sbProducts = sbProducts +"</tr>"; 
      } 
      //sbProducts = sbProducts + "</table>"; 
      // CellTwo = sbProducts.ToString(); 
      con.Close(); 
     } 
     sbProducts = sbProducts + "</table>"; 
     CellTwo = sbProducts.ToString(); 
    } 

同样可以添加</form>和表while循环之外。