现在,我可能会有点厚,并且这样做的方式不对,但简而言之,我有一个数据集,我在其中运行查询以检索客户订购的内容。具体来说,我选择了一个包含多个项目用于测试目的。
我会给你所有的代码,但我遇到的具体问题是:
<script runat="server">
Do While reader.HasRows
Do While reader.Read
</script>
<tr>
<td valign="top" width="100"><script runat="server">Response.Write(reader("SKUN"))</script><br /></td>
<td valign="top" width="200"><script runat="server">Response.Write(reader("DESCR"))</script></td>
<td valign="top" width="50"><script runat="server">Response.Write(reader("QORD"))</script></td>
<td valign="top" width="50"><script runat="server">Response.Write(reader("PRIC"))</script></td>
</tr>
<script runat="server">
Loop
reader.NextResult()
Loop
</script>
忽略内联代码方面的事情,我正在研究另一个开发人员项目并及时了解他们的工作方式,以便他们更容易回到。
然而,这打印出我正在追求的内容,但它并没有将其格式化为表格本身的行,只是在页面顶部打印了一长串文本。
我在这里遗漏了什么或者纯粹是以错误的方式做错了吗?因为我无法弄清楚为什么它不会循环打印结果。
答案 0 :(得分:2)
Response.Write()直接写入响应流。但是,ASPX页面中的HTML代码首先被处理,缓冲,然后才会写入响应流。这会导致您的数据在发送页面的任何其他部分之前发送。
您不应该使用Response.Write()。相反,您需要将数据放入由ASP.NET呈现引擎处理的相同HTML中。使用以下语法来实现此目的:
<script runat="server">
Do While reader.HasRows
Do While reader.Read
</script>
<tr>
<td valign="top" width="100"><% =reader("SKUN") %><br /></td>
<td valign="top" width="200"><% =reader("DESCR") %></td>
<td valign="top" width="50"><% =reader("QORD") %></td>
<td valign="top" width="50"><% =reader("PRIC") %></td>
</tr>
<script runat="server">
Loop
reader.NextResult()
Loop
根据评论进行修改
我认为这是您最好的选择:
<table id="someTable" runat="server">
....
<script runat="server">
Do While reader.HasRows
Do While reader.Read
Dim tr as new HtmlTableRow
tr.Cells.Add(new HtmlTableCell(){ InnerText = reader("SKUN"),Width=100,VAlign="top"})
tr.Cells.Add(new HtmlTableCell(){ InnerText = reader("DESCR"),Width=200,VAlign="top"})
tr.Cells.Add(new HtmlTableCell(){ InnerText = reader("QORD"),Width=50,VAlign="top"})
tr.Cells.Add(new HtmlTableCell(){ InnerText = reader("PRIC"),Width=50,VAlign="top"})
someTable.Rows.Add(tr)
</script>
对不起,如果它不能在VB.net中编译就好了..(我只安装了C#)
答案 1 :(得分:1)
试试这个:
Do While reader.Read
Dim tNewRow As New HtmlTableRow
Dim cellSKU, cellDESCR, cellQORD, cellPRIC As New HtmlTableCell
orderNoLbl.Text = reader("NUMB")
cellSKU.InnerText = reader("SKUN")
cellDESCR.InnerText = reader("DESCR")
cellQORD.InnerText = reader("QORD")
cellPRIC.InnerText = reader("PRIC")
tNewRow.Cells.Add(cellSKU)
tNewRow.Cells.Add(cellDESCR)
tNewRow.Cells.Add(cellQORD)
tNewRow.Cells.Add(cellPRIC)
skusTable.Rows.Add(tNewRow)
Loop