#.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. Я смог переделать свой обработчик, чтобы вернуть «правильные» данные, и теперь он работает отлично. Спасибо за совет, это сводило меня с ума!