Недавняя статья "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 на странице.
Запись добавлена 28.07.2006 в 11:37. Автор Boris Bogdanov. Категории: AJAX, atlas, Библиотеки и фреймворки, Статьи про MS Atlas, Технологии. Комментарии к этой записии можно отслеживать по RSS 2.0. Комментарии и пинги запрещены.
теги: AJAX, ASP.Net, ASP.NET-AJAX, atlas, Microsoft.
спасибо за туториал. только очень бы хотелось увидеть рабочий пример
Все просто отлично, тока в коде для web-сервиса (c# version), для переменной members забыли поставить квадр. скобки (все-таки это же Array, как-никак) и в конце точку с запятой. А то пахать не будет.
…
private string[] members ={…bla-bla-bla …};
…
Все просто отлично, тока в коде для web-сервиса (c# version), для переменной members забыли поставить квадр. скобки (все-таки это же Array, как-никак) и в конце точку с запятой. А то пахать не будет.
угу… на самом деле, особо тяжко с vb-шным кодом — tinymce в wordpress норовит его поправить…