Бизнес сайт! веб решения. Бизнес сайт

C#

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

it outsourcing

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

Microsoft SQL Server 2005

. раскрутка сайта.

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

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

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

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

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

. ; создание сайта! создание web сайтов дешево! it outsourcing, C#! Самые маленькие цены и сроки реализации сайтов; Цена веб-сайта: сайт недорого: изготовление сайтов заказ сайта. . Microsoft SQL Server 2005. Бизнес сайт
IT реальность - наша профессия
 Портфолио 
 Услуги и решения 
 Публикации и статьи 
 Контакты 

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

сайты дешево

.

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

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

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

. , заказать сайт дизайн сайта. ... концепция дизайна... разработка web-дизайна! разработка сайта; Cоздание сайта

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:
Телефон: *
Вопрос: *
Введите код: *
(защита от спама)
Обратите внимание на то, что поля, отмеченные *, обязательны для заполнения.

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

создание web сайтов быстро

. ... разработка сайта; цена бизнес сайта! заказать сайт, Бизнес сайт: Cоздание сайта! цена web-сайта; веб-дизайн, разработка сайтов; Аутсорсинг! стоимость сайта... Cоздание сайтов дешево! Разработка; Cоздание сайтов красиво. продвижение сайта! создание продвижение сайтов, Бизнес сайт: Microsoft SQL Server 2005. цена и стоимость сайта; it outsourcing

создание web сайтов качественно

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

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

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

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

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

оптимизация

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

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

. , Cоздание сайта: it outsourcing