Попытка заставить JQuery Autocomplete работать на странице Asp.Net - PullRequest
0 голосов
/ 24 марта 2010

Может кто-нибудь пролить свет на проблему, пожалуйста:

У меня есть следующее:

    $(document).ready(function () {
    $("#txtFirstContact").autocomplete({url:'http://localhost:7970/Home/FindSurname' });
});

На моей странице Asp.Net. Запрос http является функцией на контроллере MVC, и этот код находится здесь:

    Function FindSurname(ByVal surname As String, ByVal count As Integer)
    Dim sqlConnection As New SqlClient.SqlConnection
    sqlConnection.ConnectionString = My.Settings.sqlConnection
    Dim sqlCommand As New SqlClient.SqlCommand

    sqlCommand.CommandText = "SELECT ConSName FROM tblContact WHERE ConSName LIKE '" & surname & "%'"

    sqlCommand.Connection = sqlConnection

    Dim ds As New DataSet
    Dim da As New SqlClient.SqlDataAdapter(sqlCommand)
    da.Fill(ds, "Contact")
    sqlConnection.Close()

    Dim contactsArray As New List(Of String)
    For Each dr As DataRow In ds.Tables("Contact").Rows
        contactsArray.Add(dr.Item("ConSName"))
    Next
    Return Json(contactsArray, JsonRequestBehavior.AllowGet)

End Function

Насколько мне известно, контроллер возвращает данные JSON, однако я не знаю, верны ли параметры функции или действительно ли возвращаемый формат интерпретируется плагином AutoComplete.

Если кто-то может помочь в этом вопросе, я действительно ценю это.

Ответы [ 2 ]

0 голосов
/ 29 марта 2010

Почти все заработало, конечно же, сейчас не получено никаких ошибок, но также не получено никаких результатов.

Сейчас я использую новую версию JQuery со встроенным автозаполнением, и теперь получаю анимированное колесо в текстовом поле, которого раньше не было - так что, надеюсь, это хороший знак.

Моя функция MVC:

    Function FindSurname(ByVal q As String, ByVal limit As Integer) As String
    Dim sqlConnection As New SqlClient.SqlConnection
    sqlConnection.ConnectionString = My.Settings.sqlConnection
    Dim sqlCommand As New SqlClient.SqlCommand

    sqlCommand.CommandText = "SELECT ConSName FROM tblContact WHERE ConSName LIKE '" & q & "%'"

    sqlCommand.Connection = sqlConnection

    Dim ds As New DataSet
    Dim da As New SqlClient.SqlDataAdapter(sqlCommand)
    da.Fill(ds, "Contact")
    sqlConnection.Close()
    Dim a As New StringBuilder
    For Each dr As DataRow In ds.Tables("Contact").Rows
        a.Append(dr.Item("ConSName"))
        a.AppendLine()
    Next
    Return a.ToString
End Function

и скрипт на странице aspx:

    $(document).ready(function () {
    $("#txtFirstContact").autocomplete({    source: 'http://localhost:7970/Home/FindSurname/',
                                            minLength: 2
                                        });
});

Опять же, параметр "minLength", похоже, тоже работает нормально, поскольку анимированное колесо не включается, пока я не введу второй символ.

Буду очень признателен за любые дополнительные указатели.

0 голосов
/ 24 марта 2010

Функция должна принимать параметр с именем q, который содержит текст для поиска. Вы можете передать счет, используя опцию extraParams, но он не передается по умолчанию.

Содержимое, которое я возвращаю в действиях контроллера MVC, на самом деле представляет собой новый список с разделителями строк, построенный с использованием StringBuilder.AppendLine для каждой записи в результатах поиска.

НТН

Это очень хороший пример использования в MVC http://geekswithblogs.net/renso/archive/2009/09/08/jquery-autocomplete-in-asp.net-mvc-framework.aspx

...