Atlas, первые шаги. Autocomplete

Недавняя статья "Atlas, первые шаги" оказалась достаточно востребованной, что, в условиях нехватки информации по Atlas, и не удивительно. Сегодня мы продолжаем серию и публикуем вторую статью, написанную уважаемым Exception для форума Vingrad и посвященную Atlas, микрософтовской реализации AJAX. Сегодня речь пойдет об автодополнении. Итак, для начала нам нужно создать Web-сервис, предоставляющий список строк для автозаполнения. Это сделать нетрудно. Вот код этого сервиса: Namespace AtlasTest _ _ Public Class WebService Inherits System.Web.Services.WebService Private members As String() = _ {"arilou", "mr.DUDA", "chipset", "alir", "Exception", "Wowa", "Vit", _ "Poseidon", "2man", "Akina", "cardinal", "DezmASter", "bagira", _ "SoWa", "Kagor", "Pegas", "sergej.z", "Gannibal", "ivashkanet", _ "VisualProgrammerNET", "asdf", "oleg1973", "Guedda"} Private _prefixText As String _ Public Function GetWordList(ByVal prefixText As String, ByVal count As Integer) As String() _prefixText = prefixText Dim resultArray(count) As String resultArray = Array.FindAll(members, AddressOf ArrayFilter) Return resultArray End Function Private Function ArrayFilter(ByVal item As String) As Boolean Return item.StartsWith(_prefix, StringComparison.InvariantCultureIgnoreCase) End Function End Class End Namespace namespace AtlasTest [WebService(Namespace="https://tempuri.org/")] _ [WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)] public class WebService : System.Web.Services.WebService { private string members[] = {"arilou", "mr.DUDA", "chipset", "alir", "Exception", "Wowa", "Vit", "Poseidon", "2man", "Akina", "cardinal", "DezmASter", "bagira", "SoWa", "Kagor", "Pegas", "sergej.z", "Gannibal", "ivashkanet", "VisualProgrammerNET", "asdf", "oleg1973", "Guedda"}; private string _prefix; [WebMethod] public string[] GetWordList(string prefixText, int count) { _prefix = prefixText; string[] resultArray = new string[count]; resultArray = Array.FindAll(members, new System.Predicate(ArrayFilter)); return resultArray; } private bool ArrayFilter(string item) { return item.StartsWith(_prefix, StringComparison.InvariantCultureIgnoreCase); } } } Работа этого сервиса проста. Если смотреть на него, как на "чёрный ящик", то можно составить такое описание метода GetWordList: GetWordList Параметры: * prefixText - текст, набранный пользователем * count - количество результатов Результирующее значение: массив, состоящий из не более count строк, начинающихся с префикса prefixText. Например, если пользователь наберёт "c" на клавиатуре, то в ответ ему придут "chipset" и "cardinal", если, конечно, count больше или равен двум. Хорошо, мы написали сервис. Что дальше? Как обычно, добавьте на страницу контрол ScriptManager: Далее, добавьте на форму самый что ни на есть обыкновенный TextBox: Теперь приступим к самому главному. Для добавления к полю AutoComplete-поведения нобходимо объявить соответствующий элемент: Этот контрол позволяет расширять любой TextBox на странице путём добавления соответствующего тега: Всё просто, не так ли? Всё, автозаполнение работает! Полный код страницы: Yo
В следующем обзоре мы рассмотрим, как сделать Drag&Drop на странице.
 

Комментарии: 4

  1. jimy 2.08.2006 10:23

    спасибо за туториал. только очень бы хотелось увидеть рабочий пример

  2. Just_Sha 16.08.2006 10:10

    Все просто отлично, тока в коде для web-сервиса (c# version), для переменной members забыли поставить квадр. скобки (все-таки это же Array, как-никак) и в конце точку с запятой. А то пахать не будет.

    private string[] members ={…bla-bla-bla …};

  3. Just_Sha 16.08.2006 10:12

    Все просто отлично, тока в коде для web-сервиса (c# version), для переменной members забыли поставить квадр. скобки (все-таки это же Array, как-никак) и в конце точку с запятой. А то пахать не будет.

  4. celarent 16.08.2006 10:25

    угу… на самом деле, особо тяжко с vb-шным кодом — tinymce в wordpress норовит его поправить…