Автозаполнение, принимающее одно значение sql, а не несколько

#.net #asp.net #vb.net #jquery-autocomplete #jquery-ui-autocomplete

#.net #asp.net #vb.net #jquery-автозаполнение #jquery-пользовательский интерфейс-автозаполнение

Вопрос:

В настоящее время я впервые погружаюсь в автозаполнение jquery. Для начала у меня был обработчик .net, вызывающий базу данных mssql и извлекающий фамилии. Это сработало отлично.

Однако, когда я пытаюсь добавить дополнительные значения, это просто не работает. Код, используемый в обработчике, выглядит следующим образом.

     Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
    Dim prefixText As String = context.Request.QueryString("term")

    Dim conn As SqlConnection = New SqlConnection
    conn.ConnectionString = ConfigurationManager.AppSettings("CDBPath")

    Dim cmd As SqlCommand = New SqlCommand
    cmd.CommandText = ("Select Ebase.EbLastname, Ebase.EbFirstname, Ejob.EjTitle, Ebase.EbClock "   _
                        "From Ebase "   _
                        "INNER Join Ejob "   _
                        "ON Ebase.EbFlxID = Ejob.EjFlxIDEb "   _
                        "Where Ebase.EbLastname LIKE @SearchText   '%'"   _
                        "And Ebase.EbDateEnd Is Null "   _
                        "And Ejob.EjDateEnd Is Null")

    cmd.Parameters.AddWithValue("@SearchText", prefixText)
    cmd.Connection = conn

    Dim sb As StringBuilder = New StringBuilder
    conn.Open()
    Dim sdr As SqlDataReader = cmd.ExecuteReader

    While sdr.Read
        sb.Append(sdr("EbLastname")).Append(", ").Append(sdr("EbFirstname")).Append(" - ").Append(sdr("EjTitle")).Append(", ").Append(sdr("EbClock")).Append(Environment.NewLine)
    End While
    conn.Close()
    context.Response.ContentType = "application/json"
    context.Response.Write(sb.ToString)

End Sub
  

Я не включил IsReusable при публикации, но это есть. Есть ли что-то действительно простое, чего мне не хватает в том, почему ему не нравится несколько значений, но будет отображаться одно единственное значение?

** Редактировать ** Чтобы уточнить, я только что заглянул в Firebug, и он получает ответ, но просто не отображает его. Моя реализация этого пока довольно проста, ничего особенного.

         $(function() {
        $('#lastName').autocomplete
        ({
            source: "FormAutoComplete.ashx",
            minChars: 3

        });
    })
  

Комментарии:

1. Уточните, что вы имеете в виду под: «не работает». Что возвращается? Что вы видите на sb.ToString() при отладке и пошаговом выполнении в Visual Studio?

2. п.кэмпбелл Я добавил фактический код, который используется. Как есть, входные данные находятся в div с классом ui-widget, а идентификатор ввода — LastName.

Ответ №1:

Если вы возвращаете несколько значений, вам придется повозиться с синтаксическим анализом и форматированием элемента. Вот пример того, что я делал в прошлом. Оно возвращает объект json, подобный этому:

 { City: "Charleston", State: "SC", Code: "chs" }
  

и форматирует его в Charleston, SC и использует Code для фактического значения, которое отображается в текстовом поле.

 $areas.autocomplete(data, {
            formatItem: function (item) {
                return item.City   ", "   item.State;
            },
            formatResult: function (item) {
                return item.Code;
            },
            multiple: true
});
  

Комментарии:

1. Я посмотрю на форматирование данных, спасибо, Мика. Странная вещь, однако, заключается в том, что данные отправляются на страницу, она просто ничего не делает для их отображения.

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

3. Я смог переделать свой обработчик, чтобы вернуть «правильные» данные, и теперь он работает отлично. Спасибо за совет, это сводило меня с ума!