无法解决为什么我无法格式化此文本

时间:2009-08-03 08:59:27

标签: html asp.net html-table

现在,我可能会有点厚,并且这样做的方式不对,但简而言之,我有一个数据集,我在其中运行查询以检索客户订购的内容。具体来说,我选择了一个包含多个项目用于测试目的。

我会给你所有的代码,但我遇到的具体问题是:

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

忽略内联代码方面的事情,我正在研究另一个开发人员项目并及时了解他们的工作方式,以便他们更容易回到。

然而,这打印出我正在追求的内容,但它并没有将其格式化为表格本身的行,只是在页面顶部打印了一长串文本。

我在这里遗漏了什么或者纯粹是以错误的方式做错了吗?因为我无法弄清楚为什么它不会循环打印结果。

2 个答案:

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