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, я обнаружил множество элементов управления, которые, на мой взгляд, намного лучше!

Просто подумал, что я выброшу другой вариант в твоем направлении!

Другие вопросы по тегам