1

这是我第一次使用 ASP,我有点搞砸了。我正在编写一个从数据库中获取信息并将其显示在表格中的界面。为此,我使用了一个 asp 按钮,一旦我单击 onClick 事件中的按钮,我就从 asp 文本框中获取文本,我连接到数据库,执行查询并将 html 打印到主页。

问题是,一旦我单击按钮,生成的 html 将呈现在页面顶部,文本框和按钮仍保留在下方,迫使我向下滚动以进行另一次搜索。

如果有帮助,这是我的 onClick 代码:

If Not SearchBox.Text Is Nothing Then

        Dim conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" &
                                      "Data Source= C:\Users\user\Documents\Visual Studio 2012\Projects\Aplicación UNED\Aplicación UNED\App_Data\Libros.mdb")

        Dim query = New OleDbCommand("SELECT * FROM Libros WHERE Titulo LIKE '%" & SearchBox.Text & "%'", conn)

        Dim adapter = New OleDbDataAdapter(query)

        Dim res = New DataSet()
        adapter.Fill(res, "Libros")
        Response.Write("<table class='data_table'>")
        Response.Write("<thead><tr class='data_table_info'><th scope='col'>Titulo</th><th scope='col'>Resumen</th><th scope='col'>Categoria</th><th scope='col'>ISBN</th><th scope='col'>PrecioConIVA</th><th scope='col'>EnlaceCompra</th></tr></thead>")
        For Each Fila In res.Tables("Libros").Rows
            Response.Write("<tr><td>" & Fila("Titulo") & "</td><td>" & Fila("Resumen") & "</td><td>" & Fila("Categoria") & "</td><td>" & Fila("ISBN") & "</td><td>" & Fila("PrecioConIVA") & "</td><td>" & Fila("EnlaceCompra") + "</td></tr>")
        Next
        Response.Write("</table>")
        conn.Close()
    End If
End Sub

问候。

4

2 回答 2

2

不要使用 Response.Write,而是在按钮下方引入 Literal 控件,并将生成的文本分配给 Literal 的 Text 属性。这将确保您的内容显示在您的按钮下方。

假设您有一个名为 SearchBox 的 ASP.NET 文本框,<asp:Textbox id="SearchBox" runat="server" />请将文字放在其下方

<asp:Textbox id="SearchBox" runat="server" />
<br />
<asp:Literal id="ResultHtml" runat="server" />

并在您后面的代码中,将Response.Write调用替换为

Dim sb = new StringBuilder("<table class='data_table'>")
sb.Append("<thead><tr class='data_table_info'><th scope='col'>Titulo</th><th scope='col'>Resumen</th><th scope='col'>Categoria</th><th scope='col'>ISBN</th><th scope='col'>PrecioConIVA</th><th scope='col'>EnlaceCompra</th></tr></thead>")

      For Each Fila In res.Tables("Libros").Rows
          sb.Append("<tr><td>" & Fila("Titulo") & "</td><td>" & Fila("Resumen") & "</td><td>" & Fila("Categoria") & "</td><td>" & Fila("ISBN") & "</td><td>" & Fila("PrecioConIVA") & "</td><td>" & Fila("EnlaceCompra") + "</td></tr>")
      Next

sb.Append("</table>")    
ResultHtml.Text = sb.ToString()
于 2012-11-15T18:57:14.313 回答
0

在页面呈现到响应之前,您正在将 html 写入响应。

于 2012-11-15T18:59:17.910 回答