Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Просмотр Master-detail таблиц на одной странице / 25 сообщений из 75, страница 1 из 3
05.02.2013, 14:14
    #38137979
rockclimber
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Подскажите, как лучше сделать, я пока ничего путного придумать не могу.
Есть две таблицы, связанные по одному полю. Допустим, список отделов и список сотрудников. Я хочу нечто приближенное к такому варианту:
1. На странице два региона (типа Report, например). Первый регион - список отделов, второй - список сотрудников.
2. Пользователь может выбрать один из отделов (любым способом), во втором регионе должен появиться список сотрудников данного отдела.

Ограничения по способам реализации - миимальные (пока). Любая фантазия приветствуется. Максимум, что я пока смог придумать - в первом регионе сделать Column Link на ту же страницу, а в линке параметрами передавать значения для Hidden Item, по значению которого будет фильтроваться отчет во втором регионе.
Какие еще есть варианты?

P. S. А с помощью ajax можно сделать обновление отчета в регионе?
...
Рейтинг: 0 / 0
05.02.2013, 16:18
    #38138271
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
rockclimber, совсем недавно в очередной раз делал пример подобного, пишу по памяти варианты: 0. Вариант "Всё на одной странице". Очень простой. Что нужно: - поле Hidden, при загрузке страницы всегда устанавливается в NULL; - два отчёта на одной странице; - второй отчёт с PPR (Partial Page Refresh) или интерактивный, запрос зависит от поля Hidden, оно же прописано в Page Items to Submit; - в отчёте Master есть столбец с ID; - у этого столбца должно быть что-то, что позволит добраться до него селектором jQuery. Оформление в Column Formatting, Column Class etc; - на отчёт Master навешивается DA. На клик по строке или по столбцу выполняются следующие действия:
  • SetValue -- значение столбца с ID из строки, по которой кликнули переносится в спрятанное поле;
  • Refresh -- обновляем регион с отчётом Detail; Show -- опционально, при загрузке страницы скрывать пустой отчёт Detail стилем CSS, при выборе строки из отчёта Master показывать Detail; AddClass или SetStyle -- опционально, можно выделить выбранную строку стилем. Тогда надо не забывать убрать этот стиль у остальных строк.
Можно создать шаблон отчёта Master, в котором всегда использовать первый столбец как ID, таким образом перенеся ID в атрибуты всей строки. Там же можно написать общий JS-код для выделения строки. Минусы подхода: два интерактивных отчёта использовать не получится. 1. Вариант посложнее "Master на одной странице, Detail на другой": - две страницы, на одной отчёт Master и регион с IFRAME, на другой простой шаблон страницы без ничего и отчёт Detail; - та же канитель из варианта 0 со скрытым полем и DA, но DA теперь обновляет содержимое фрейма в действии Execute JavaScript Code. Значение скрытого поля можно передавать через ссылку в SRC фрейма или предварительно сабмитить через действие Execute PL/SQL Code. PS: Я предпочитаю вообще не делать Master-Detail, хватает Drill down.
...
Рейтинг: 0 / 0
05.02.2013, 16:21
    #38138282
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Да, всё выше написанное подразумевает обновление отчётов Detail без перезагрузки всей страницы. С перезагрузкой всё банально: перенести значение в скрытое поле, которое фильтрует запрос в Detail; сабмит; бранч на эту же страницу.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
17.09.2015, 16:29
    #39054144
Zeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
suPPLerrockclimber,
SetValue -- значение столбца с ID из строки, по которой кликнули переносится в спрятанное поле;


Подскажите, пожалуйста, как это вытащить?

Имеется ,соответственно, Interactive Report, в нем поле ID, а также hidden Page Item, куда нужно значение этого поля положить, видимо, по событию Click в Dynamic Action
...
Рейтинг: 0 / 0
17.09.2015, 16:35
    #39054151
Zeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Есть еще один нюанс, в свойствах Attributes интерактивного отчета уже стоит link to custom target другой страницы с передачей ей туда нужного айдишника
Просто очень много примером в интернетах, где указан именно этот способ, типа выберите там вместо link to custom target URL и будет вам счастье
...
Рейтинг: 0 / 0
17.09.2015, 18:01
    #39054273
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Zeke,
нужно знать JS.
Если не знаете чем не устроило с обновлением страницы. Задержка 1-2 сек, кода никакого. Техподдржка бьёт балду, т.к. ошибок нет.
...
Рейтинг: 0 / 0
17.09.2015, 18:03
    #39054277
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
ZekeЕсть еще один нюанс, в свойствах Attributes интерактивного отчета уже стоит link to custom target другой страницы с передачей ей туда нужного айдишника
Просто очень много примером в интернетах, где указан именно этот способ, типа выберите там вместо link to custom target URL и будет вам счастье
именно. Без причины не делайте из веб-дельфи.
...
Рейтинг: 0 / 0
17.09.2015, 18:23
    #39054305
Zeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Petro123Zeke,
нужно знать JS.
Если не знаете чем не устроило с обновлением страницы. Задержка 1-2 сек, кода никакого. Техподдржка бьёт балду, т.к. ошибок нет.

C JS не очень, поэтому и просил помочь
...
Рейтинг: 0 / 0
17.09.2015, 19:20
    #39054353
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
ZekeC JS не очень, поэтому и просил помочь
работать как рекомендует Оракл (волшебники в Создать-Форма-Мастер) намного интереснее. Поверь.
...
Рейтинг: 0 / 0
17.09.2015, 19:26
    #39054355
Zeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Petro123,

Я так и делал изначально. Но wizard создает две страницы и помещает detail таблицу на вторую страницу и делает ее в виде tabular form, а мне нужен тупо просмотр на первой. Поэтому пришлось руками создавать detail регион на первой же, в который я хочу передать id из мастера.
...
Рейтинг: 0 / 0
17.09.2015, 19:43
    #39054365
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Zeke,
дак просмотр или редактирование?
Если 2, то у меня тоже так. И я не парюсь.
Если 1, то вместо табуляр можно обычный IR\любой репорт + перезагрузка или рефрешь этого детайль репорта.
Выше в мастере при клике в колонке передать на сервер ID для фильтрации запроса для детайль таблички.
....
Ещё в мастере вроде было галка типа создать на этой же страничке...Не было?
...
Рейтинг: 0 / 0
17.09.2015, 20:23
    #39054408
Zeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Petro123,

Wizard в Apex 5 при создании master detail создает две страницы, первую - просмотр мастер таблицы, вторая страницы - табулярные формы и для мастера , и для дитэйла. По-другому не хотит :( Я только что проверил это

У меня щас тоже так и есть, что типа на первой странице мастер, а на второй - редактирование мастера и дитэйла

Но мне нужно , чтобы на первой странице еще и просто дитэйл показывался под мастером, без редактирования.

Я делаю все, как гуру и завещали делать.

Соответственно я положил еще один регион типа classic report на первую страницу и хочу, чтобы он обновлялся каждый раз в зависимости от текущего родителя. Классический мастер-дитэйл.

Я создал два dynamic action.

Первый event -> click, selection type -> region, region -> имя интерактивного мастер репорта
и вот именно в нем я хочу в специально приготовленный hidden page item засунуть текущий id из мастер таблицы. Но никак не получается это сделать :( В этом и вся загвоздка

Второй dynamic action, соответственно, тупо рефрешит дочернюю таблицу и все.

В интернетах многие решения сводятся к тому, что типа укажи в атрибутах мастер репорта в свойстве link column тип URL и туда засунуть java код, который и будет моему page item'у присваивать текущий idшник. Но я не могу так сделать, у меня там стоит переход на вторую страницу, где уже редактирование этих отчетов происходит.
...
Рейтинг: 0 / 0
18.09.2015, 03:52
    #39054596
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Zeke,
Уже писал imho что это запутает пользователя, т.к в мамтере нет текущей выделенной строки как понятия.
Я бы сделал детайль информацию в виде всплывающего окна при движении мыши по стрлкам либо доп . колонкой.
Удачи!
...
Рейтинг: 0 / 0
18.09.2015, 09:10
    #39054670
Zeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Petro123,

Пользователь сам такое желание изъявил, в том то и дело. Иначе бы я не парился над этим уаще :(
...
Рейтинг: 0 / 0
18.09.2015, 10:13
    #39054734
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Zeke,

Своими словами, какая задача?
...
Рейтинг: 0 / 0
18.09.2015, 10:14
    #39054737
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Zeke,

Нижний репорт обновляется от выбранного значения верхнего?
...
Рейтинг: 0 / 0
18.09.2015, 10:32
    #39054760
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Попробую вам декларативно описать как это сделать, почти без JS.
1. В первоми репорте, в столбце и ИД строки прописывается класс, название класс произвольное, пусть будет
Код: plaintext
my_class
.
2. В этом же столбце прописать атрибут onclick="return false"
3. Создаем DA, событие onClick, jQuery selector -
Код: plaintext
.my_class
4. Действие Javascript expression - $x("MY_HIDDEN_ITEM")=this.triggeringElement.value;
5. Далее можно рефрешнуть регион следующим действием с помощью ДА, либо в JS следующей строчкой $('#MY_SECOND_REPORT').trigger('apexrefresh');

P.S.
1. У второго региона должна быть разрешена Enable Partial Page Refresh
2. Под запросом в строчке Page Items to Submit должен быть прописан скрытый элемент MY_HIDDEN_ITEM
3. Во втором запросе должен в условии должен содержаться скрытый эелемент select * from table where id=:MY_HIDDEN_ITEM;
...
Рейтинг: 0 / 0
18.09.2015, 10:41
    #39054776
Zeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
blkangelZeke,

Нижний репорт обновляется от выбранного значения верхнего?

да! именно так
...
Рейтинг: 0 / 0
18.09.2015, 10:44
    #39054783
Zeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
blkangelПопробую вам декларативно описать как это сделать, почти без JS.
1. В первоми репорте, в столбце и ИД строки прописывается класс, название класс произвольное, пусть будет
Код: plaintext
my_class
.
2. В этом же столбце прописать атрибут onclick="return false"
3. Создаем DA, событие onClick, jQuery selector -
Код: plaintext
.my_class
4. Действие Javascript expression - $x("MY_HIDDEN_ITEM")=this.triggeringElement.value;
5. Далее можно рефрешнуть регион следующим действием с помощью ДА, либо в JS следующей строчкой $('#MY_SECOND_REPORT').trigger('apexrefresh');

P.S.
1. У второго региона должна быть разрешена Enable Partial Page Refresh
2. Под запросом в строчке Page Items to Submit должен быть прописан скрытый элемент MY_HIDDEN_ITEM
3. Во втором запросе должен в условии должен содержаться скрытый эелемент select * from table where id=:MY_HIDDEN_ITEM;

Спасибо вам за совет! я примерно так и делал вначале, все вокруг да около ходил. Щас буду пробовать
...
Рейтинг: 0 / 0
18.09.2015, 10:51
    #39054791
non-apexoid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Zeke, вот
...
Рейтинг: 0 / 0
18.09.2015, 11:00
    #39054800
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Zeke,
Ошибочку увидел
$x("MY_HIDDEN_ITEM").value=this.triggeringElement.value;
а лучше так
$s("MY_HIDDEN_ITEM",this.triggeringElement.value);
...
Рейтинг: 0 / 0
18.09.2015, 11:29
    #39054826
Zeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
non-apexoidZeke, вот

Да, вот прям так мне и надо! Но не могу скачать плагин на работе :(
...
Рейтинг: 0 / 0
18.09.2015, 11:32
    #39054829
Zeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
blkangelПопробую вам декларативно описать как это сделать, почти без JS.
1. В первоми репорте, в столбце и ИД строки прописывается класс, название класс произвольное, пусть будет
Код: plaintext
my_class
.
2. В этом же столбце прописать атрибут onclick="return false"


подскажите пжл , вот так нужно описать класс в HTML Expression у столбца?

<span class = "my_class" onclick="return false">#ID#</span>

тег span взят просто так, может вместо него другой какой-то должен стоять?
...
Рейтинг: 0 / 0
18.09.2015, 11:38
    #39054833
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
Zeke,

HTML expression обязательно использовать?
Я не уверен что при таком способе данная схема сработает, надо проверять.
Для указания класса есть Element CSS Classes.
Но если все-таки необходимо конструктор использовать то вот так лучше попробовать
<a href="#" class="my_class" onclick="return false">#ID#</a>
...
Рейтинг: 0 / 0
18.09.2015, 11:51
    #39054847
Zeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просмотр Master-detail таблиц на одной странице
blkangel,

Абсолютно не обязательно. Но я посмотрел - у региона в свойстве CSS Classes можно только какой-то готовый выбрать из выпадайки. Его, видимо, нужно где-то в другом месте прописывать, чтобы воспользоваться им.
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Просмотр Master-detail таблиц на одной странице / 25 сообщений из 75, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]