Это довольно простая задача, суть в том, что расширитель автозаполнения jQuery ожидает массив значений. Вот пример того, как я анализирую стандартные результаты XML из веб-службы ASMX для использования с расширителем автозаполнения jQuery.
Поскольку ASP.NET любит переписывать ваши идентификаторы, вы можете передать ClientID для получения динамического идентификатора.
$("#<%= TextBox1.ClientID %>").autocomplete("/Demo/WebSvc.asmx/SuggestCustomers", {
parse: function(data) {
var parsed = [];
$(data).find("string").each(function() {
parsed[parsed.length] = {
data: [$(this).text()],
value: $(this).text(),
result: [$(this).text()]
};
});
return parsed;
},
dataType: "xml"
});
Вот как будет выглядеть связанный веб-сервис, не забудьте раскомментировать атрибут [ScriptService] в веб-сервисе:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class WebSvc: WebService
{
[WebMethod]
public string[] SuggestedCustomers(string q)
{
// Do Query
// Add items into string array
List<string> items = new List<string>();
while (dr.Read())
{
items.Add(dr[0].ToString());
}
// Return array
return items.ToArray();
}
}