【问题标题】:Can't work out why I can't format this text无法弄清楚为什么我无法格式化此文本
【发布时间】:2010-11-16 07:38:14
【问题描述】:

现在,我可能有点笨拙,并且这样做的方式错误,但简而言之,我有一个数据集,我可以在其中运行查询以检索客户订购的商品。具体来说,我选择了一个包含多个项目的测试。

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

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

忽略内联代码方面的事情,我正在开发另一个开发人员项目,并与他们的工作方式保持同步,以便他们更容易返回。

但是,这会打印出我所追求的内容,但它不会将其格式化为表格本身的行,它只是在页面顶部打印一长行文本。

我是在这里遗漏了什么,还是只是以错误的方式做事?因为我不知道为什么它不循环打印结果。

【问题讨论】:

  • 您是否缺少它周围的 标签? :)
  • 不,我只是省略了那部分代码,因为我不想粘贴整个页面,因为它还有很多内容。
  • Liam Gulliver...我已经编辑了我的答案,请检查并告诉我..
  • 恕我直言,您应该向其他开发人员指出他们做的事情完全错误,他们应该绑定到 ASP.NET Repeater 或 GridView。为他们树立一个学习的好榜样。我不认为将错误延续下去,因为“这就是一直以来的做法”是足够好的理由,尽管我确实理解你的理由。
  • 我现在已经把它切换到至少后面的代码,我稍后会处理其他的东西。

标签: html asp.net html-table


【解决方案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

【讨论】:

  • 移动了它,仍然打印出一行 O.o 我不知道为什么,尽管一切看起来都很好。
  • 当场,成功了。不敢相信它这么明显!
【解决方案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

基于 cmets 编辑

我认为这是你最好的选择:

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

【讨论】:

  • 我试过了,但是当我从
  • 请看我这样做是有道理的,因为这就是我使用 Classic ASP 的方式。虽然它似乎不允许我混合
  • 你有点纠结。 标签在页面呈现时被处理,而
猜你喜欢
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多