ИТ аутсорсинг. Создать сайт. оптимизация! дизайн сайта! раскрутка сайта. it outsourcing: outsourcing... веб решения! разработка сайта создание web сайтов красиво. : разработка бизнес сайта; Самые маленькие цены и сроки реализации сайтов

цена сайта

. web-дизайн. . создание web сайтов качественно; продвижение сайта! создание сайта. Оптимизация, продвижение сайтов... Cоздание сайтов. Разработка, Разработка сайта... изготовление сайтов .NET. ; создание бизнес сайта, цена бизнес сайта. создание web сайтов быстро! корпоративный сайт: создание сайта... Бизнес сайт... сайты дешево; ASP.NET... ASP; заказать сайт! сайт недорого, C#: веб-дизайн, разработка сайтов, разработка сайта; цена web-сайта; стоимость сайта

Цена веб-сайта

. ... Cоздание сайтов быстро; Cоздание сайтов красиво. разработка web-дизайна! Бизнес сайт. Cоздание сайтов качественно... цена и стоимость сайта, Cоздание сайта... заказ сайта... концепция дизайна! создание продвижение сайтов: Аутсорсинг. создание web сайтов дешево, MSSQL: Cоздание сайтов различной сложности. web дизайн студия! Microsoft SQL Server 2005! стильный сайт... Cоздание сайтов дешево
Бизнес сайт; Cоздание сайтов дешево! Cоздание сайтов красиво. сайты дешево, создание продвижение сайтов, Бизнес сайт! Создать сайт создание web сайтов дешево. ! стоимость сайта. стильный сайт: ASP.NET: разработка сайта: веб-дизайн, разработка сайтов: заказ сайта

Microsoft SQL Server 2005

. , ASP... создание сайта дизайн сайта. ; outsourcing... it outsourcing: Разработка... Cоздание сайтов качественно: создание сайта; оптимизация... изготовление сайтов; раскрутка сайта: Cоздание сайта; создание web сайтов быстро, MSSQL: создание web сайтов качественно Разработка сайта. ; C#. Цена веб-сайта... цена web-сайта... создание web сайтов красиво, Самые маленькие цены и сроки реализации сайтов. концепция дизайна: Cоздание сайтов быстро! корпоративный сайт... Аутсорсинг, цена сайта создание бизнес сайта. ... Cоздание сайтов: web дизайн студия, сайт недорого... разработка web-дизайна; .NET: цена и стоимость сайта: цена бизнес сайта: разработка сайта... Оптимизация, продвижение сайтов; веб решения. продвижение сайта. разработка бизнес сайта: web-дизайн. заказать сайт... ИТ аутсорсинг Cоздание сайтов различной сложности.
IT реальность - наша профессия
 Портфолио 
 Услуги и решения 
 Публикации и статьи 
 Контакты 

создание бизнес сайта. ! корпоративный сайт: web-дизайн

Cоздание сайтов

. стоимость сайта. ! разработка сайта: цена web-сайта! Самые маленькие цены и сроки реализации сайтов: создание сайта! Cоздание сайтов красиво заказать сайт. : изготовление сайтов. ASP. создание сайта: оптимизация .NET. ; цена и стоимость сайта: ИТ аутсорсинг; разработка web-дизайна. сайты дешево! веб-дизайн, разработка сайтов, концепция дизайна: создание продвижение сайтов! разработка сайта! Cоздание сайтов быстро... дизайн сайта. заказ сайта! цена бизнес сайта! Cоздание сайтов дешево! сайт недорого... Разработка

продвижение сайта

. ! Бизнес сайт. разработка бизнес сайта! Cоздание сайтов качественно: создание web сайтов дешево; стильный сайт; Цена веб-сайта Оптимизация, продвижение сайтов. , создание web сайтов быстро, Бизнес сайт. Microsoft SQL Server 2005, веб решения; C#... Аутсорсинг! MSSQL! создание web сайтов качественно; web дизайн студия! цена сайта! раскрутка сайта! outsourcing ASP.NET. ... Cоздание сайта. it outsourcing... Разработка сайта Cоздание сайтов различной сложности. ... Создать сайт! создание web сайтов красиво

AJAX - подстановка слов в текстовое поле

Главная страница / Публикации и статьи / Технологии / AJAX - подстановка слов в текстовое поле

Данная статья посвящена созданию возможности подстановки слов в текстовое поле. Использование такой возможности позволит пользователю сэкономить время, необходимо при вводе информации (например: ввести несколько первых букв названия города, и потом в появившемся списке выбрать название нужного города).

Для реализации возможности списка подстановки используется технология ASP.NET 2.0.

Первое, что необходимо – это создать проект веб-приложения. Для этого в Visual Studio 2005 выберите в меню пункт File\New\Web Site. В появившемся окне выберите заготовку ASP.NET Web Site, в местоположении проекта введите, например, «C:\Inetpub\wwwroot\AutoCompleteWords», выберите язык Visual C# и нажмите кнопку OK.

Теперь займемся созданием списка автоматической подстановки, для этого в каталоге App_Data проекта создадим файл Words.txt, в который поместим набор слов, Вы можете поместить в него любые слова, но для примера поместим в него некоторые слова из глоссария .NET SDK:

access control list (ACL)
ADO.NET
aggregate event
alpha channel
anchoring
antialiasing
application base
application domain (AppDomain)
application manifest
application state
ASP.NET
ASP.NET application services database
ASP.NET mobile controls
ASP.NET mobile Web Forms
ASP.NET page
ASP.NET server control
ASP.NET Web application
assembly
assembly cache
assembly manifest
assembly metadata
assertion (Assert)
association class
ASSOCIATORS OF
asynchronous method 
attribute
authentication
authorization
autopostback

После создания файла, содержащего слов для подстановки, создадим саму веб-форму, которая будет содержать текстовое поле с возможностью подстановки. Для этого в файл Default.aspx, который содержится в созданном проекте, поместим следующий код:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="AutoComplete" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Текствое поле с подстановкой</title>

    <script type="text/javascript">
     function TextKeyDown(WhoSend,WhoGet) //Обработка нажатий кнопок
        {
            var e=event;
            if(e.keyCode==13)
            {
                e.returnValue =false;
                return false;
            }
            else if(e.keyCode==27)
            {
                document.getElementById(WhoGet).style.display='none'
                e.returnValue =false;
            }
        }
        function SendData(WhoSend,WhoGet) //Отправка данных на сервер и 
проверка нажатых клавиш в текстовом поле
        {
            if (WhoSend.value.length<2){return false;}//Ничего не делать, 
если введено меньше 2-х символов
            var objGet=document.getElementById(WhoGet);
            var e=event;
            if (e.keyCode==40) //Нажата стрелка вниз
            {
                if (objGet.selectedIndex<objGet.options.length-1)
                    objGet.selectedIndex++;
                else 
                    objGet.selectedIndex=0;
                return false;
            }else if (e.keyCode==38) //Нажата стрелка вверх
            {
                if (objGet.selectedIndex>0)
                    objGet.selectedIndex--;
                else 
                    objGet.selectedIndex=objGet.options.length-1;
                return false;
            }else if (e.keyCode==13) //Нажат ввод
            {
                ReturnValueToTextBoxs(objGet,WhoSend)
                return false;
            }else if (e.keyCode==27) //Нажат Escape
            {
                objGet.style.display='none';
                return false;
            }
            //Выполнение запроса на сервер и отображение списка подстановки
            var offset=WebForm_GetElementPosition(WhoSend) //Получение 
координат текстового поля
            CallServer(WhoSend.value,WhoGet); //Запрос на сервер
            objGet.style.top =offset.y+WhoSend.offsetHeight+'px';
            objGet.style.left =offset.x+'px';
            objGet.style.width =offset.width+'px';
            objGet.style.display='block'; //Отображение списка на экране

        }
        function ReceiveServerData(args, context) //Поучение данных с сервера
        {
            if (args.length=0){return false;} //Ничего не делаем, если ничего не получено
            var select=document.getElementById(context)
            var mass=args.split("\t"); //Превращаем строку в массив
            for (var i=select.length-1;i>-1;i--) //Очищаем список
                select.options[i]=null;
            for (var i=0;i<mass.length-1;i++)
            {
                select.options[i]=new Option(mass[i]); //Заполняем список
            }
            if (i!=0)
                select.size=i+1; //Выставляем размер с списка

        }        
        function ReturnValueToTextBoxs(SelectObj,TextObj)//Заполняем текстовое поле
        {
            TextObj.value=SelectObj.options[SelectObj.selectedIndex].text;
            TextObj.focus();
            SelectObj.style.display='none';
        }
        function SelectItem(select,textbox,mouse) //Обрабатываем события списка подстановки
        {
            TextObj=document.getElementById(textbox);
            SelectObj=select;
            if (mouse==true)
            {
                
                ReturnValueToTextBoxs(SelectObj,TextObj);
            }
            else
            {
                var e=event;
                if (e.keyCode==13)
                {
                    ReturnValueToTextBoxs(SelectObj,TextObj);
                 
                }
                else if(e.keyCode==27)
                {
                    TextObj.focus();
                    SelectObj.style.display='none';
                }
                
            }
        }
    </script>

</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="TextBox1" runat="server" Width="477px"
AutoCompleteType="Disabled"></asp:TextBox>
            <asp:ListBox ID="Select1" runat="server" Style="position: 
absolute; display: none;">
            </asp:ListBox>
        </div>
    </form>
</body>
</html>


А в файл Default.aspx.cs поместим исходный код обработчика событий веб-формы:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

public partial class AutoComplete : System.Web.UI.Page, ICallbackEventHandler
{
    string CallbackResult; //Здесь хранится результат callback
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            RegisterClientScript();
            TextBox1.Attributes.Add("onkeyup",
			String.Format("SendData(this,'{0}');", Select1.ClientID)); //Подключаем 
обработчик нажатия клавиш
            TextBox1.Attributes.Add("onkeydown",
			String.Format("TextKeyDown(this,'{0}',event)", Select1.ClientID)); 
//Обработка нажатия клавиш
            Select1.Attributes.Add("onkeydown",
			String.Format("SelectItem(this,'{0}',false);", TextBox1.ClientID)); 
			//Событие списка
            Select1.Attributes.Add("ondblclick",
			String.Format("SelectItem(this,'{0}',true);", TextBox1.ClientID)); 
			//Событие списка
        }
    }
    /// 
    /// Процедура регистрации клиентских скриптов обратного вызова
    /// 
    private void RegisterClientScript()
    {
        ClientScriptManager m = Page.ClientScript;
        string cbReference = m.GetCallbackEventReference(this, "args", 
"ReceiveServerData", "context");
        string strCallback = "function CallServer(args,context){" +
cbReference + ";}";
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), 
"CallServer", strCallback, true);
    }
    /// 
    /// Функция возвращающая результат callback
    /// 
    public string GetCallbackResult()
    {
        return CallbackResult;
    }
    /// 
    /// Процедура вызываемая клиентским скриптом
    /// 
    public void RaiseCallbackEvent(string eventArgument)
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        FileStream file = new
          FileStream(Server.MapPath("~/App_Data/words.txt"), FileMode.Open,
          FileAccess.Read);
        StreamReader reader = new StreamReader(file);
        String word;
        while ((word = reader.ReadLine()) != null)
        {
            if (word.Length >= eventArgument.Length)
                if (eventArgument.ToLower() == word.Substring(0,
 eventArgument.Length).ToLower())
                {
                    sb = sb.Append(word);
                    sb = sb.Append("\t");
                }
        }
        file.Close();
        CallbackResult = sb.ToString();
    }
}


Теперь запустим проект на выполнение. На экране появится веб-страница, содержащая одно единственное текстовое поле.


Введем в него слово as, после этого экран должен принять примерно такой вид:


Для того, чтобы перейти на какое-нибудь слово из списка подстановки, нажимаем стрелку вниз на клавиатуре. Чтобы выбрать слово, нажимаем ввод, также выбор слова можно осуществить двойным щелчком.
В мире много апельсинов,
а такой как этот  -  
только мы!
У нас всегда найдется время связаться с Вами!
Заполните, пожалуйста, форму обратной связи.
Это займет всего 30 секунд времени.
Ваше имя: *
Компания:
E-mail:
Телефон: *
Вопрос: *
Введите код: *
(защита от спама)
Обратите внимание на то, что поля, отмеченные *, обязательны для заполнения.

Пишите:
веб решения, создание web сайтов быстро; Cоздание сайта: web-дизайн: Разработка сайта. дизайн сайта; разработка сайта; цена сайта, создание бизнес сайта, заказ сайта. изготовление сайтов... заказать сайт! создание сайта! Оптимизация, продвижение сайтов, ИТ аутсорсинг. web дизайн студия. Самые маленькие цены и сроки реализации сайтов... Разработка, сайт недорого, создание сайта! Аутсорсинг: концепция дизайна

корпоративный сайт

. : Cоздание сайтов: создание продвижение сайтов

стоимость сайта

.

Cоздание сайтов красиво

. ... создание web сайтов качественно! Цена веб-сайта. Бизнес сайт; продвижение сайта! веб-дизайн, разработка сайтов, Microsoft SQL Server 2005... цена web-сайта; Cоздание сайтов быстро, ASP. Cоздание сайтов различной сложности! ASP.NET. создание web сайтов красиво... outsourcing создание web сайтов дешево. C#. ! сайты дешево разработка бизнес сайта. , Бизнес сайт! раскрутка сайта MSSQL. ... цена бизнес сайта: Cоздание сайтов дешево... Cоздание сайтов качественно; разработка web-дизайна

цена и стоимость сайта

. ; разработка сайта: it outsourcing

оптимизация

. : стильный сайт. .NET... Создать сайт
заказ сайта: ASP, Cоздание сайтов дешево Аутсорсинг. Самые маленькие цены и сроки реализации сайтов. ! Cоздание сайтов красиво: оптимизация создание web сайтов дешево. . Microsoft SQL Server 2005: цена и стоимость сайта; Cоздание сайтов быстро создание продвижение сайтов. ... концепция дизайна стоимость сайта. ; дизайн сайта... цена бизнес сайта... создание сайта. web-дизайн: Цена веб-сайта: Cоздание сайта. Бизнес сайт; цена web-сайта сайт недорого. . Разработка. создание web сайтов быстро... разработка сайта... C#! outsourcing! изготовление сайтов... разработка бизнес сайта, цена сайта: MSSQL... ASP.NET; создание бизнес сайта... раскрутка сайта. продвижение сайта! корпоративный сайт! Разработка сайта! Cоздание сайтов. Создать сайт: создание web сайтов красиво Бизнес сайт. ; веб решения, создание сайта, сайты дешево; it outsourcing! ИТ аутсорсинг: web дизайн студия, Cоздание сайтов качественно: разработка web-дизайна! стильный сайт, веб-дизайн, разработка сайтов, разработка сайта, Cоздание сайтов различной сложности... .NET, заказать сайт: создание web сайтов качественно Оптимизация, продвижение сайтов.