#c# #asp.net #ajaxcontroltoolkit
#c# #asp.net #ajaxcontroltoolkit
Вопрос:
Мне интересно, есть ли способ использовать ajax toolkit autocompleteextender для подключения к нескольким элементам управления текстовым полем.
Причина в том, что у нас есть несколько элементов управления текстовыми полями, и мне не нравится использовать 8 autocompleteextenders для выполнения одного и того же, так как все 8 из них должны быть правильно инициализированы и так далее, Что кажется более удобным в обслуживании.
Редактировать:
Я создал метод, который инициализирует объект autocompleteextender и передает каждый объект этому методу, поэтому единственное, что мне нужно установить отдельно для каждого из них, — это ID и TargetElementID. По крайней мере, лучше, чем ничего, но я все равно был бы признателен за лучшее решение этой проблемы.
Ответ №1:
Не является ответом на конкретный вопрос, но я всегда использовал Ajax Control toolkit autocomplete extender, но затем я обнаружил 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, я нашел множество элементов управления, которые, на мой взгляд, намного лучше!
Просто подумал, что я бы предложил другой вариант в вашем направлении!
Комментарии:
1. Спасибо, я изучил это, и мне кажется, что это более жизнеспособное решение, которое в ajaxtoolkit, по-видимому, не позволит вам настраивать большую часть его поведения.
2. Рад быть полезным! Обязательно посмотрите на другие элементы управления Jquery, доступные, когда вам нужно использовать ajax .. есть несколько фантастических!