четверг, 24 января 2013 г.

Всплывающие окна(Popup) в Jdeveloper 11.1.1.6.0

        Часто при разработке форм в Oracle Jdeveloper возникает необходимость, что бы данные  выводились в отдельном окне на странице.Для этого в Jdeveloper существует компонента Popup. Разработаем форму,  в которой будет таблица отделов, а во всплывающем окне будет выводится таблица сотрудников.Приступим(использовать будем демонстрационную базу Oracle - Scott).
       Запустите Jdeveloper и создайте приложение PopupApp. В нем создайте Entity и View объекты таблиц Dept и Emp и ViewLink между ними. Создание приложения и бизнес компонент описана в статье Создание простого приложения ADF в Jdeveloper 11.1.1.6.0.
       Создайте страницу  и добавьте на  нее таблицу с помощью Data Control DeptView1
       И установите свойства как показано на следующей картинке



     После того как мы создали таблицу с отделами, нам нужно создать всплывающее окно с  таблицей сотрудников этого отдела.Для этого найдите и перенесите   компоненту Popup с окна Component Palette -> Common  Components на страницу.
       Сейчас мы создали всплывающее окно, которое будет открываться  при нажатии правой кнопке по строкам таблицы. Добавьте  EmpView1 в это окно:

        И установите свойства как показано на следующей картинке
      На странице в окне должна появиться наша таблица.
     Теперь создайте кнопку при вызове  которой будет отображаться таблица сотрудников.Для этого с окна Component Palette -> Common  Components добавьте объект  Button и назовите ее "Показать сотрудников отдела". Теперь что бы по нажатию кнопки открывался наш Popup нужно  добавить  в кнопку компонент "Show popup behavior". Для этого нажмите правой  кнопкой мыши по Button   "Показать сотрудников отдела"  и выберите пункт "Inser inside -Показать сотрудников отдела ->ADF Faces...". В появившемся окне выберите "Show Popup Behavior". Это компонента создана для того, что бы показывать Popup и имеет  4 свойства:Popupid(id окна для вывода), TriggerType(при каком событии вызывать окно) , Allign,AllignId. Введите id нашего окна, или найдите его с помощью мастера как показано на картинке.

      Если сейчас запустить форму, то окно с таблицей сотрудников будет выводиться, но если присмотреться внимательней можно увидеть что выводятся одни те же значения в таблице не смотря на выбор других строк. Это все происходит из за свойства Popup -  ContentDelivery( immediate, lazy, lazyUncached).Это свойство отвечает за частоту обновления окна. Если установлено lazy -  то окно обновляется только при первом запуске, lazyUncached- при каждом запуске окна, immediate - постоянно. Выберите свойство lazyUncached. Все.Можно запускать страницу, форма готова : ). Что бы форма была немного смотрибельней, установите в таблице сотрудников в свойстве Width = 900, а в Show popup behavior в свойство Allign =afterStart.Запускайте приложение