Ajax Toolkit AutoCompleteExtender

#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 .. есть несколько фантастических!