Ajax Toolkit AutoCompleteExtender
Мне интересно, если есть способ с помощью ajax toolkit autocompleteextender для подключения к нескольким элементам управления текстового поля.
Причина в том, что у нас есть несколько элементов управления текстовым полем, и мне не нравится использовать 8 autocompleteextenders для выполнения одной и той же вещи, так как все 8 из них должны быть правильно инициализированы и так далее, каждый чувствует себя более легким в обслуживании.
Редактировать:
Я сконструировал метод, который инициализирует объект autocompleteextender и передает каждый объект этому методу, поэтому единственное, что мне нужно установить для каждого из них - это идентификатор и TargetElementID. По крайней мере, лучше, чем ничего, но я все равно был бы признателен за лучшее решение этого вопроса.
1 ответ
Не ответ на этот вопрос, но я всегда использовал расширитель автозаполнения инструментария Ajax Control, но потом я обнаружил Jquery, который, на мой взгляд, намного лучше, и я думаю, что вы могли бы легко сделать то, что вы хотите, хотя вам это понадобится назначить его каждому элементу управления в jQuery, но вам понадобятся только 2 функции: одна для получения данных и одна для обработки результатов.
Вы делаете что-то похожее на следующее:
$(document).ready(function () {
$('#<%=txtSearchBox.ClientID%>').autocomplete('/Search.ashx');
$('#<%=txtSearchBox.ClientID%>').result(function (event, data, formatted) {
if (data) {
// Extract the data values
var name = data[0]; // appears in textbox
var dataval1= data[1];
var dataval2= data[2];
$("#<%=hdndataval1.ClientID%>").val(dataval1);
$("#<%=hdndataval2 .ClientID%>").val(dataval2);
}
});
});
Вы должны использовать скрытые поля для хранения идентификатора, но он автоматически завершается с помощью обработчика.
public void ProcessRequest(HttpContext context)
{
string prefixText = context.Request.QueryString["q"];
//do your thing here and return as a bar separated list
StringBuilder sb = new StringBuilder();
foreach(Results res in results )
{
sb.Append(String.Format("{0}|{1}|{2}", +res.Val1, res.Val2, res.Val3));
sb.Append(Environment.NewLine);
}
context.Response.Write(sb.ToString());
}
JQuery здесь (я думаю)
Должен признать, что я привык клясться этим инструментарием управления, но, познакомившись с Jquery, я обнаружил множество элементов управления, которые, на мой взгляд, намного лучше!
Просто подумал, что я выброшу другой вариант в твоем направлении!