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

Microsoft SQL Server 2005

. : сайт недорого. Cоздание сайтов быстро, оптимизация

разработка web-дизайна

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

Бизнес сайт

.

разработка бизнес сайта

. : ИТ аутсорсинг... цена web-сайта... корпоративный сайт: создание бизнес сайта, C#

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

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

Разработка сайта

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

веб-дизайн, разработка сайтов. : Microsoft SQL Server 2005, продвижение сайта! стильный сайт... Разработка сайта. разработка сайта; создание бизнес сайта... ASP.NET

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

. сайт недорого. : разработка сайта создание сайта. ; создание web сайтов быстро; Cоздание сайтов качественно... стоимость сайта... заказать сайт, Cоздание сайтов различной сложности! разработка web-дизайна

веб решения

. . Создать сайт! Cоздание сайта. создание web сайтов красиво, цена сайта. MSSQL, outsourcing web дизайн студия. ! Бизнес сайт, сайты дешево... Cоздание сайтов красиво: цена и стоимость сайта! раскрутка сайта; web-дизайн, корпоративный сайт: Cоздание сайтов дешево; .NET; заказ сайта: разработка бизнес сайта дизайн сайта.

Самые маленькие цены и сроки реализации сайтов

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

it outsourcing

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

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

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

Аутсорсинг

. , outsourcing, заказать сайт... Самые маленькие цены и сроки реализации сайтов... MSSQL. веб решения... создание продвижение сайтов разработка сайта. ! корпоративный сайт... изготовление сайтов. стильный сайт... ASP! заказ сайта, Бизнес сайт! Создать сайт. Microsoft SQL Server 2005

Бизнес сайт

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

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

. , создание web сайтов красиво, концепция дизайна... продвижение сайта; сайт недорого. web дизайн студия Cоздание сайта.

оптимизация

. . раскрутка сайта Оптимизация, продвижение сайтов. : цена web-сайта

Разработка сайта

. : Cоздание сайтов различной сложности ASP.NET. , создание бизнес сайта. разработка web-дизайна: Cоздание сайтов качественно создание web сайтов дешево. : разработка сайта: C#

Яндекс цитирования     Рейтинг@Mail.ru     RU-CENTER
dotSoft © 2003 - 2019, Москва