Не могу понять, почему я не могу отформатировать этот текст - PullRequest
1 голос
/ 03 августа 2009

Теперь я могу быть немного толстым и делать это неправильно, но вкратце, у меня есть набор данных, в котором я запускаю запрос, чтобы получить то, что заказал клиент. В частности, я выбрал один с несколькими предметами для тестирования.

Я избавлю вас от всего кода, но у меня есть проблема с:

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

2 голосов
/ 03 августа 2009

Response.Write () записывает непосредственно в поток ответов. Однако HTML-код на странице ASPX сначала обрабатывается, буферизуется и только затем записывается в поток ответов. Это приводит к тому, что ваши данные отправляются до отправки любой другой части страницы.

Вы не должны использовать Response.Write (). Вместо этого вам нужно поместить ваши данные в тот же HTML-код, который обрабатывается механизмом рендеринга ASP.NET. Для этого используйте следующий синтаксис:

<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 голос
/ 03 августа 2009

Попробуйте это:

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