2013-10-03 117 views
1

我有一個運行5次,而循環:不讀表單元素while循環第一次迭代ASP.NET

string qry = "Select * from tbl_Products order by ProductId"; 
SqlCommand cmd = new SqlCommand(qry, con); 
con.Open(); 
sbProducts="<table><tr>"; 
using (SqlDataReader sdr = cmd.ExecuteReader()) 
{ 
    while (sdr.Read()) 
    { 
     sbProducts = sbProducts + "<td>"; 
     sbProducts = sbProducts + "<Form>"; 
     sbProducts = sbProducts + "123"; 
     sbProducts = sbProducts + "</Form>"; 
     sbProducts = sbProducts + "</td>"; 
    } 
    sbProducts = sbProducts + "</table>"; 
    CellTwo = sbProducts.ToString(); 
    con.Close(); 
} 

它的輸出是不錯,但它不纏繞第一迭代TD不換與表單標籤。 這似乎是非常不合邏輯的。輸出如下:

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


</tr> 
</table> 
+2

...什麼是sbProducts最初?你在哪裏/如何寫出來?另外'sbProducts + =「​​」;'是寫它的一個更短的方法。 – MikeSmithDev

+1

你確定while循環運行5次嗎? – doctorlove

+0

sbProducts是一個字符串。 –

回答

1

您有兩個問題。 1)你沒有正確地建立一個表格(你錯過了</tr>) 2)該表格可能在另一個表格中。您的代碼(略清理)應該是這樣的:

while (sdr.Read()) 
{ 
    sbProducts += "<td>"; 
    sbProducts += "<Form>"; 
    sbProducts += "123"; 
    sbProducts += "</Form>"; 
    sbProducts += "</td>"; 
} 
sbProducts += "</tr></table>"; //You were missing this </tr> 

一旦你確認你不是這樣另一種形式裏面,你會看到它出來的預期。一個表單不能包含另一個表單,它是一個HTML標準。

+0

這不是一個 –

+0

您是否正在使用母版頁?大多數默認的.aspx頁面和母版頁面將從'

'開始。將它放入表單中時,我可以完全複製您的問題。在表單之外它工作正常。 – MikeSmithDev

+0

您可能還會注意到,呈現的HTML和您在檢查螢火蟲等元素時看到的內容有所不同。 – MikeSmithDev

相關問題