MS Atlas & UpdatePanel — доступная мощь

Помнится, в одном коммьюнити я говорил, что использование MS Atlas – штука простая и в большинстве случаев сводится к применению контрола UpdatePanel. Давайте посмотрим на это на конкретном примере. Сегодня я покажу пример реального приложения. Итак, дано: существует база данных, в которой хранятся сообщения от клиентов менеджерам и обратно. Список сообщений хранится в MS SQL и выводится хранимой процедурой. Конкретное сообщение также получаем через хранимую процедуру, принимающую один параметр. Плюс, на странице будет возможность переключить тип сообщения – входящий или исходящий. Итого нам потребуется: DropDownList с выбором типа сообщения, GridView со списком сообщений и FormView для просмотра сообщения. Что ж, начнем с дропдауна. Для DropDownList руками вводим 2 пункта: «Входящие» и «Исходящие», значения, соответственно, 1 и 2. AutoPostBack выставляем true. Теперь давайте займемся GridView. Для него нам важно настроить DataSource. Целиком процесс я показывать не буду: уверен, что все, кто работает с ASP.Net 2.0 это видели далеко не раз, а новичкам не даст заблудиться толковый визард. Нас в этом заинтересует лишь вкладка с параметрами, передаваемыми хранимой процедуре. Нам необходимо выставить, что тип сообщения передается от дропдауна, который мы настроили раньше. После настройки DataSource автоматом будет создан список колонок с названиями, соответствующими названиям полей в базе. В свойствах грида укажем, что он поддерживает сортировку, пейджинг и выбор. Затем отредактируем список колонок и поменяем их названия. Укажем ключевое поле, по которому у нас будет отбираться в дальнейшем сообщение (DataKeyNames) . Что ж, настала очередь FormView. Для него нам тоже потребуется настроить DataSource. На сей раз параметр для хранимой процедуры передается из уже настроенного GridView. После настройки DataSource автоматически формируются шаблоны. Опять же, мы их немного поправим. Костяк страницы у нас готов. Мы можем запустить и посмотреть результат. Всё должно работать. Наверняка вы спросите: а при чем здесь AJAX? Всё, что мы только что сделали – обычная страница ASP.Net 2.0, и ничего нового и интересного тут нет. Что ж, давайте займемся AJAX, а точнее – MS Atlas. Для начала на страницу нам потребуется добавить AtlasScriptManager: А теперь наступает пора уже упоминавшегося контрола UpdatePanel. Дропдаун, грид и FormView мы поместим в обертку этого контрола: содержимое А теперь… А теперь всё, можете открыть страницу и проверить. Все наши запросы теперь проходят асинхронно без перезагрузки страницы. Как вы видели, всю страницу мы собрали практически не касаясь руками кода и совсем не влезая в code behind. Работа с контролами, входящими в Atlas Toolkit тоже проста до невозможности и хорошо задокументирована. В большинстве случаев вам будет достаточно просто добавить контрол на страницу и затем указать объект, функциональность которого необходимо «расширить». Ну и текст получившейся страницы целиком: Untitled Page
Входящие Отправленные Автор:
Адресат:
Тема:
Отправлено:
Получено:

 

Комментарии: 10

  1. A4 8.08.2006 5:47

    Прикольно конечно иметь Delphi для веба, но что-то меня смущает. Почему такого нет под PHP?..

  2. celarent 9.08.2006 8:29

    на самом деле, все,как и обычно, не ограничивается таким тасканием объектов мышкой. более того, практически все случаи, которые разбираются в примерах и тьюториалах, где красиво автоматом генеряться и select, и delete, и update, основывются на одной таблице, без каких либо join-ов, так что сгенерить все эти запросы просто. в реальной жизни такие случай практически не встречаются. так что в случае сложных запросов всё равно приходится писать всё самому. да и любой шаг в сторону от стандартного крайне упрощенного сценария опять делает использование code behind обязательным. что, пожалуй, и хорошо. другой вопрос, что всё равно, событие и функция на каждый контрол вешаются крайне просто и прозрачно, так что работать с ними на порядок удобнее, чем в php. да и сами контролы на порядок более удобны. ну где в php есть грид, который автоматом поддерживает сортировку, пейджинг, редактирование и море событий на люой случай?.. впрочем, с контролами на php вообще проблема

  3. Новости 2.0 9.08.2006 10:31

    Обсудите эту новость на news2.ru…

  4. EvilBot 9.08.2006 12:14

    A4, Не надо путать тёплое с мягким, PHP – язык программирования, а ASP.NET – не язык программирования.

  5. celarent 10.08.2006 8:15

    EvilBot, да неужели? То же самое, что здесь было проделано при помощи драг-н-дропа можно столь же успешно, только гораздо более гибко проделать из code behind на c# или vb.net. более того, если смотреть с точки зрения ООП, то это php, как ни прискорбно, не язык программирования, даже в 5-ой версии. я пишу и на c# (читай asp.net) и на php, и вынужден признать, что c# куда как универсальней. да, монстроидальней, но мощнее и быстрее в разработке.

  6. Рустам 6.11.2006 5:47

    C# очень красивый язык программирования. PHP это суррогат языка, куда свалено куча всего – например, во время работы может обнаружиться, что это с этим не работает, другое расширение глючит, и тому подобное. Удивительно, но например в PHP нет именованных аксессоров (как в C#), а только генеральный на весь класс (__get, __set), поэтому в PHP не может быть полноценного Intellisense. Microsoft выпустила DLINQ и этим убила PHP.

  7. kasyaar 13.01.2007 7:11

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

    to celarent
    при чем тут контролы и php?
    Контролы – это отображение, которые имеют отношение только к отображению(это может быть что угодно HTML, Ajax, Flex и многое другое).
    А какссательно объектности или неообъектности так это дело рук программиста… Есть люди програмившие многие лета на делфи и не слышавшие о паттернах проектирования, а есть ребята год пописавшие на пыхе и сующие эти самые готовые решения куда надо и куда не надо(мораль: можно и на яве програмить мысля не объектами, а функциями – пользуясь только инкапсуляцией).

    to Рустам
    Наличие “именованных аксессоров” не самое главное для языка и не оперделяющая его возможности. И пых далеко и давно уже не суррогат.
    И вобще:
    Не стоит судить о php основываясь на своих поверхностных знаниях.

  8. zoza 13.04.2007 3:49

    очень советую посмотреть php framework
    https://www.pradosoft.com/

    похоже на это, только IDE вот нет…

  9. [bizon] 26.05.2007 6:20

    Все равно скора все на РубиОнРэйлс писать будем )))))

  10. Nikolay 9.04.2008 6:17

    есть веб-сервис, у которого есть веб-метод GetUsersByRoleID(int roleID)который возвращает выборку из некоторой таблицы в виде DataSet.

    public DataSet GetUsersByRoleID(long RoleID)
    {
    OdbcConnection myConn = new OdbcConnection(“бла бла бла”);
    OdbcDataAdapter myData = new OdbcDataAdapter(“select * from RUser where RoleID = ” + RoleID.ToString(), myConn);
    myData.SelectCommand.CommandType = CommandType.StoredProcedure;
    DataSet ds = new DataSet();
    myData.Fill(ds);
    return ds;
    }

    есть веб-клиент, который берет этот DataSet и строит из него DataView:

    protected void Page_Load(object sender, EventArgs e)
    {
    localhost.Service1 serviceInst = new localhost.Service1();//мой веб-сервис
    DataSet ds = serviceInst.GetUsersByRoleID(Convert.ToInt32(RoleList1.SelectedValue));//мой веб-метод
    UserGrid1.DataSource = ds;//довольно тупо, возможно здесь должно чтото быть, чтобы клиент узнал о структуре данных в DataSet
    UserGrid1.DataBind();
    }

    как в таком случае реализуется сортировка, селект и пэйджинг в гриде?