Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Работа с деревьями / 21 сообщений из 21, страница 1 из 1
06.05.2015, 01:32
    #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
06.05.2015, 04:54
    #38952285
scrip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с деревьями
А параметр отчёта Page Items to Submit установлен на обновляемый айтем?

Вообще, используя апекс следует учиться браузерной отладке настоящим образом (с) Ульянов.
Лучше в фаерфоксе или хроме.
Поставить брекпоинт в функцию и посмотреть значение $v('itemname') после клика.
Может быть просто опечатка в js - консоль в этом случае покажет ошибку.
...
Рейтинг: 0 / 0
06.05.2015, 07:24
    #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
06.05.2015, 08:00
    #38952304
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с деревьями
APEX Newbie,
1. Лучше всё декларативно.
Т.е. дерево должно иметь событие click а items уже имеет change.
А регион с запросом refresh
...
Рейтинг: 0 / 0
06.05.2015, 23:36
    #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
06.05.2015, 23:39
    #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
07.05.2015, 08:28
    #38953216
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с деревьями
APEX Newbie,
Ты написал что способ 1 работает.
Зачем тебе способ 2?
...
Рейтинг: 0 / 0
07.05.2015, 20:24
    #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
07.05.2015, 20:28
    #38954056
APEX Newbie
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с деревьями
А вот то, что в Region Header не подставляется по ссылке Page Item , меня беспокоит.

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

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

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

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

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



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

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

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



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



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

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

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



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

jsTree(legacy)

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

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


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