Ajax Repeater Control (перевод)

Тема в разделе "Web 2.0, AJAX, Ruby, RSS технологии", создана пользователем admin, 14 фев 2006.

  1. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    <h1><strong>AJAX Repeater control (перевод)</strong></h1> <P>Repeater control создаёт ItemTemplate, HeaderTemplate,FooterTemplate, AlternatingItemTemplate и SeperatorTemplate используяjavascript для вывода данных из XMLHTTP запроса.</P> <P>XMLHttp и AJAX помогут вам использовать в вашем приложении трюкикоторые недоступны в обычном HTML, но ваш код может быстро статьнепонятным, трудным если вы заранее не спланируете ваш подход должнымобразом. Я ещё помню тот день, когда писал труднопонятный код,классически строя таблицы в asp. Всё меняется с использованиемконтролов наподобие repeater control, и, код даталиста, в asp.netтеперь можно сделать чистым и понятным для разработчика.</P> <P>AJAX происходит ещё со времён классического asp 1999-2000 годов,многие ребята работали над собственными версиями паттернов и frameworksразработанными с использованием технологии AJAX. Есть JavasScriptбиблиотека, которая содержит много прототипов AJAX(<A href="http://prototype.conio.net" target="_blank">http://prototype.conio.net</A>), но они всё ещё не так полезны, удобны,чтобы помочь нам отобразить табличные данные с удобством которое мыполучем когда используем контрол наподобие repeater control.</P> <P><STRONG>Что котрол делает?</STRONG></P> <P>Я сделал возможным объявление его программно в javascript коде иустановку его свойств таких как ItemTemplate, HeaderTemplate,FooterTemplate, AlternatingItemTemplate и SeperatorTemplate.</P> <P>У контрола есть свойство DataSource, с которым я могу связать XML полученный из XMLHTTP запроса.</P> <P>Контрол способен использовать данные из аттрибутов и из InnerXMLисточника данных XML и он также может вызывать внешний javascriptметод, если это необходимо для манипулирования данными перед отрисовкой.</P> <P>Когда я вызываю DataBind метод контрола - он будет рендерить себя в специальный HtmlElement определённый как HostControlID.</P> <P><STRONG>Что необходимо?</STRONG></P> <P>Для краткости, я предложу что у нас есть handler employees.ashx который возвращает xml, следующей XML структуры.</P> <P><EmployeesData>
      <Employees>
        <Employee ID=”PMA42628M”>
          <HireDate>8/27/1992 12:00:00 AM</HireDate>
          <Name>Paolo</Name>
          <LastName>Accorti</LastName>
        </Employee>
      </Employees>
      …
    </EmployeesData></P> <P>Мы будем использовать prototype.js скрипт, который получает данныеиз handler и отправляет их в RepeaterControl. Если у вас нет этойбиблиотеки, то я настоятелно рекомедую вам обзавестись ей.</P> <P><STRONG>Внутри javascript RepeaterControl</STRONG></P> <P>Ниже приведены три DataBinding выражения, которые используются в контроле.</P> <OL> <LI>{@AttributeName} для связываения аттрибутов. Например {@ID} - результат “PMA42628M” <LI>{$NodeName} для связывания значений нод, например {$Name} - результат “Paolo” <LI>{Eval(formatDate({$HireDate}))} вызывает javascript функцию formatDate(’8/27/1992 12:00:00 AM’) - результат в “8-27-1992″</LI> </OL> <P>Код делает следющие вещи.</P> <OL> <LI>Добавляет HeaderTemplate в результат. <LI>Просматривает XML результирующие ноды, доступные в источнике данных. <LI>Проверяет текущее количество строк и выбирает или ItemTemplate или AlternatingItemTemplate, <LI>Используя регулярные выражения заменяет {@} выражения и {$} выражения на соотвествующие данные из XML. <LI>Используя регулярные выражения применяет {Eval} выражения к данным. <LI>Применяет SeparatorTemplate к строкам кроме последней. <LI>Добавляет FooterTemplate в результат. <LI>Рендерит результат в специальный HtmlElement.</LI> </OL> <P><STRONG>Внутри страницы</STRONG></P> <P>Html разметка содержит два главных элемента.</P> <OL> <LI>Div в который рендериться таблица. <LI>Кнопка, при нажатии которой срабатывает событие, которое вызывет XMLHttp и связывает данные с нашим RepeaterControl.</LI> </OL> <P>javascript содержит следующее</P> <OL> <LI>Объявление RepeaterControl, которые уставнавливает свои шаблоны и свойства. <LI>LoadData функцию, которая вызывается для кнопки, LoadData функцияиспользует prototype.js и делает XMLHttp запрос и передаёт управлениенад результатом другой javascript функции называемой dataReceived. <LI>dataReceived функция связывает данные полученные из XMLHttp запрос в RepeaterControl. <LI>И javascript функцию formateDate, которая сделанна также, и помогает форматировать данные в более презентабильный вид.</LI> </OL> <P>Этот рисунок показывает конечный результат.

    [​IMG]</P> <P>Рисунок 1: Пример AJAX RepeaterControl</P> <P><STRONG>Исходники и как запустить пример на вашей машине. </STRONG></P> <P>Исходники содержит следующие файлы.</P> <OL> <LI>Пример страницы на которой используется RepeaterControl - default.htm <LI>Сам RepeaterControl - RepeaterControl.js <LI>Handler, который возвращает XML - Emplayees.ashx <LI>Библиотека прототипов - prototype.js <LI>Стили default.css</LI> </OL> <P>Переместите исходные файлы в любую директорию и установитеconnection string в employees.ashx для вашей доступной базы данных SQLсервера. Если у вас нет возможности работать с базой данных, тогдапросто замените employees.ashx на xml файл и внесите необходимыеизменения в default.htm.</P> <P><STRONG>Вывод.</STRONG></P> <P>Я всё ещё эксперементирую с подходами использования контроловнаподобие этого, которые рендерят различные виды данных из javascript,я всё ещё не уверен, что этот подход к программированию будет работатьдолго. Расскажите мне о вашем подходе.</P><P>Исходники: <A href="http://www.bxq.ru/wp-content/uploads/2006/02/RepeaterControlSample.zip" target="_blank">RepeaterControl</A> 
    Автор: Jigar Desai. 30 января, 2006 года.
    Источник: <A href="http://www.c-sharpcorner.com/UploadFile/desaijm/AJAXRepeaterControl01302006213655PM/AJAXRepeaterControl.aspx" target="_blank">http://www.c-sharpcorner.com/Upload<WBR>File/desaijm/AJAXRepeaterControl01302006<WBR>213655PM/AJAXRepeaterControl.aspx</A></P>http://nicolay-ignatov.livejournal.com
     
  2. Saper

    Saper Гость

    Наш подход - это использование Microsoft Atlas
     
  3. udvikler

    udvikler Гость

    Не работает.
     
  4. Registered

    Registered Гость

    не используйте!
     
Загрузка...
Похожие Темы - Ajax Repeater Control
  1. aameno2
    Ответов:
    1
    Просмотров:
    486
  2. solomonec
    Ответов:
    1
    Просмотров:
    1.422
  3. Сергей74
    Ответов:
    1
    Просмотров:
    1.039
  4. АВаТаРчег
    Ответов:
    1
    Просмотров:
    1.043
  5. obnal24
    Ответов:
    0
    Просмотров:
    889

Поделиться этой страницей