У меня есть поисковая система на моем сайте ASP.net 4.0 VB, на которой мне нужно связать результаты поиска с их отдельными страницами.Я понимаю, что это можно сделать, просто нажав кнопку «Отправить» после текстового поля поиска, но кнопка «Отправить» не поместится рядом с панелью поиска на моей странице, плюс она будет выглядеть неправильно.
По-старому, результаты хранились в скрытом div, где они становились ссылками на свои страницы.Я надеялся, что код старого поиска может быть включен в новый поиск, но я не знаю, куда он пойдет.Единственный способ сделать это - поместить код в веб-сервис в цикл while или for.Я могу быть далеко от базы, но именно поэтому я спрашиваю, как лучше всего это сделать?
<WebMethod()> _
Public Function GetCompletionList(ByVal prefixText As String, ByVal count As Integer) As String()
Dim ProductSql As String = "Select ProductName FROM Product WHERE ProductName LIKE '" & prefixText & "%'"
Dim sqlConn As New SqlConnection
sqlConn.Open()
Dim myCommand As New SqlCommand(ProductSql, sqlConn)
Dim myReader As SqlDataReader = myCommand.ExecuteReader()
Dim myTable As New DataTable
myTable.TableName = "ProductSearch"
myTable.Load(myReader)
sqlConn.Close()
Dim items As String() = New String(myTable.Rows.Count - 1) {}
Dim i As Integer = 0
For Each dr As DataRow In myTable.Rows
items.SetValue(dr("ProductName").ToString(), i)
i += 1
Next
Return items
End Function
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="ProductSearch.asmx" />
</Services>
</asp:ScriptManager>
<asp:TextBox ID="Search" runat="server" AutoComplete="off"></asp:TextBox>
<asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="Search" ServicePath="~/ProductSearch.asmx" ServiceMethod="GetCompletionList" MinimumPrefixLength="1" CompletionSetCount="120" EnableCaching="true" CompletionListCssClass="results">
</asp:AutoCompleteExtender>