powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Работа с деревьями
21 сообщений из 21, страница 1 из 1
Работа с деревьями
    #38952267
APEX Newbie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, уважаемый ALL!

Начал знакомство с APEX. Построил дерево, которое по клику на узел открывает регион с
отчетом(classic report).
На стартовой странице с деревом работает линк вида
Код: plsql
1.
'f?p=&APP_ID.:1:&APP_SESSION.::::P1_SELECTED_NODE:' ||ID 



page item P1_SELECTED_NODE задан в секции отчета как HIDDEN, имеет
источник Database Column (ID).
Так все работает. Стал копать глубже, чтобы была возможность сделать Parital Refresh региона с отчетом, в зависимости от выбранного узла в дереве. Нашел статьи:
Apex tree and form one one page

и также вот , вторая ближе к теме, тут именно регион создается.

Попытался воссоздать данную технологию. Ничего не вышло.

Линк в дереве, по утверждению авторов, должен выглядеть

Код: plsql
1.
'javascript:pageItemValue('''||id||''')'



сама функция декларируется так:

Код: javascript
1.
2.
3.
4.
5.
6.
<script>
function pageItemValue(node)
{
  $s('P1_SELECTED_NODE', node);
}
</script>


Эту декларацию поместил в секцию HTML Header
Создал итем, прицепил к нему Dynamic Action. И...не работает (

У итема свойства
Value Protected NO
Source NULL - ибо значение должно подставляться скриптом. И он не отрабатывает, такое впеатление.
Помогите разобраться, пожалуйста.
...
Рейтинг: 0 / 0
Работа с деревьями
    #38952285
scrip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А параметр отчёта Page Items to Submit установлен на обновляемый айтем?

Вообще, используя апекс следует учиться браузерной отладке настоящим образом (с) Ульянов.
Лучше в фаерфоксе или хроме.
Поставить брекпоинт в функцию и посмотреть значение $v('itemname') после клика.
Может быть просто опечатка в js - консоль в этом случае покажет ошибку.
...
Рейтинг: 0 / 0
Работа с деревьями
    #38952296
Фотография Алексей Выхрыстюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе все верно. Теперь нужно "сообщить" что hidden элемент P1_SELECTED_NODE изменился, и на него повесить динамическую акциию для обновления таблицы

Код: javascript
1.
2.
3.
4.
5.
function pageItemValue(node)
{
$("#P1_SELECTED_NODE").val(node);
    $("#P1_SELECTED_NODE").trigger("change");
}
...
Рейтинг: 0 / 0
Работа с деревьями
    #38952304
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
APEX Newbie,
1. Лучше всё декларативно.
Т.е. дерево должно иметь событие click а items уже имеет change.
А регион с запросом refresh
...
Рейтинг: 0 / 0
Работа с деревьями
    #38953124
APEX Newbie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, scrip, Алексей, спасибо что ответили )

Собственно говоря, суть затеи сводилась к тому, чтобы проверить как работает(и работает ли)
Partial Region Refresh.

Так вот, с линком вида
Код: plsql
1.
'f?p=&APP_ID.:1:&APP_SESSION.::::P1_SELECTED_NODE:' ||ID


все чудно работает, и при переходе с одного узла на другой, вызывается событие
OnChange, меняется значение итема P1_SELECTED_NODE, регион с отчетом подхватывает
измененное значение и выводит нужные данные. page items on submit при этом не установлен.

А вот при изменении значения итема способом
Код: plsql
1.
'javascript:pageItemValue('''||id||''')'


требуемое событие onChange не "зажигается".
Возможно, что в статье
Apex tree and form one one page
самый последний шаг:
авторAt this point you just start to try about anything to get it to work. And voilà, the solution: on the branch back to the page, set Pn_SELECTED_NODE:
мною не был сделан. Просто не нашел , где я его могу сделать.
...
Рейтинг: 0 / 0
Работа с деревьями
    #38953125
APEX Newbie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, и тут по ходу возникла другая бяка(бага?)

В Region Header вставляю

Бла-бла-бла(статический текст)&P1_SELECTED_NODE.

Прям как в доке

авторTo reference page or application items using substitution variables:
1. Reference the page or application item in all capital letters.
2. Precede the item name with an ampersand (&).
3. Append a period (.) to the item name.

Но вижу только
Бла-бла-бла(статический текст)

подстановки не происходит (
...
Рейтинг: 0 / 0
Работа с деревьями
    #38953216
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
APEX Newbie,
Ты написал что способ 1 работает.
Зачем тебе способ 2?
...
Рейтинг: 0 / 0
Работа с деревьями
    #38954053
APEX Newbie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

После переписывания JS-кода и явного указания в Page Items To Submit , заработал и способ 2.
При этом, готов поклясться, что я уже так делал. Может действительно был лишний пробел в JS,
или не сохранился, выставляя Page Items To Submit

Хотелось проверить, что
Код: javascript
1.
javascript:pageItemValue('''||id||''')



"зажигает" триггер change. Таки да.
Интересную приписку предложил Алексей:
Код: javascript
1.
$("#P1_SELECTED_NODE").trigger("change");


Правда я ей не воспользовался.
...
Рейтинг: 0 / 0
Работа с деревьями
    #38954056
APEX Newbie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот то, что в Region Header не подставляется по ссылке Page Item , меня беспокоит.

Можно, конечно ЯваСкриптом это вылечить, или дополнительным СЕЛЕКТ-ом, но в своем решении
применить &P1_SELECTED_NODE. я противоречий с документацией не нашел.

При этом там не сказано, что я должен для этого делать Computations или Branches. Должно напрямую работать.

Ан нет (
...
Рейтинг: 0 / 0
Работа с деревьями
    #38954128
Фотография Алексей Выхрыстюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регионы динамически не обновляются, только во время перезагрузки или сабмита.
Динамически (акция refresh) можно обновлять таблицы и селекты, все остальное через динамическую акцию set value
...
Рейтинг: 0 / 0
Работа с деревьями
    #38954163
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
APEX Newbie,
Imho триггер был в старых версиях. В новых не актуален.
...
Рейтинг: 0 / 0
Работа с деревьями
    #38954164
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Выхрыстюк,
-1
...
Рейтинг: 0 / 0
Работа с деревьями
    #38954165
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
APEX Newbie,
Зачем тебе хидер региона?
...
Рейтинг: 0 / 0
Работа с деревьями
    #38955297
APEX Newbie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати,

APEX 5.0 PAGE DESIGNER: MEET THE WIDGETS здесь инфа про виджеты в 5-м APEX.

В APEX 5.0 для дерева новый виджет, jsTree более не поддерживается
...
Рейтинг: 0 / 0
Работа с деревьями
    #38955309
APEX Newbie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Максимум пока чего от него добился, от этого виджета, так это
Код: javascript
1.
$('#MYTREE').treeView('getSelectedNodes')



возвращает объект.

Вариант, часто используемый в статьях:

Код: javascript
1.
$.tree.reference('#MYTREE')



или
Код: javascript
1.
apex.jQuery.tree.reference('#MYTREE') 



в версии APEX 5 не работает.

Буду копать дальше ...
...
Рейтинг: 0 / 0
Работа с деревьями
    #38955334
APEX Newbie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот, например, используя

Код: javascript
1.
$s('MY_PAGE_ITEM', $('#MYTREE').treeView('getSelection').text())



можно установить page item MY_PAGE_ITEM в значение выбранного узла данного нового виджета.
Документации по нему нет...
...
Рейтинг: 0 / 0
Работа с деревьями
    #38955336
APEX Newbie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот, нашел интересную ссылку, кому интересно :
APEX 5.0 CONVERTING TO THE NEW APEX TREE
...
Рейтинг: 0 / 0
Работа с деревьями
    #38955337
APEX Newbie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе, конечно можно в attributes -> Tree Implementation выставить

jsTree(legacy)

и не ведать бед при миграции на APEX 5 )))
...
Рейтинг: 0 / 0
Работа с деревьями
    #38955343
Фотография Алексей Выхрыстюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Алексей Выхрыстюк,
-1

Обоснуй
...
Рейтинг: 0 / 0
Работа с деревьями
    #38955357
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей ВыхрыстюкPetro123Алексей Выхрыстюк,
-1
Обоснуй
ну, дак ты написал, что регион не обновляется.
А как быть с п.п. события Refresh у региона?
...
Рейтинг: 0 / 0
Работа с деревьями
    #38955359
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
APEX Newbieи не ведать бед при миграции на APEX 5 )))
если тема про 5-ку, указывай в теме.
В 4-ке по сабжу вроде проблем нет. Нужно просто сделать 3-4 шага для функционала.
Об этом ещё админ писал года 3-4 назад.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Работа с деревьями
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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