powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Передача параметров без submita
16 сообщений из 16, страница 1 из 1
Передача параметров без submita
    #37953570
tBikRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://apex.oracle.com/pls/apex/f?p=54245:4
WorkSpace : TRAL
demo/demo
Простая задача - отобразить соответствующий Report без перегрузки страницы по клику на радио кнопке.
Сделал DEMAND процесс, который вроде должен присвоить hidden itemy на странице значение, а по этому значению выводить нужный мне репорт.
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37953619
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tBikRu,

Можно вот так забыдлокодить .
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37953789
tBikRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
haXbat,

Спасибо, забыл про такой способ. А как быть если на странице Dirty Solution будет HiddenItem содержащий ID, значение которого нужно передать например в AJAX Report 1
Код: sql
1.
2.
3.
select MANAGEMENT.MNAME as MNAME 
 from MANAGEMENT MANAGEMENT 
 where ID = P5_ID
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37953876
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tBikRu,

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
var get = new htmldb_Get(null,$x('pFlowId').value,null,parseInt(f_page));

//Передача переменной P5_ID
get.add('P5_ID',  $v('P5_ID'));

gReturn = get.get(null,'<ajax:BOX_BODY>','</ajax:BOX_BODY>');
get = null;
$x('Report_Holder').innerHTML = gReturn;



Только учитывайте, что при таком подходе перестает работать динамическая сортировка столбцов, пагинация. Чтобы работало с ними - нужно дальше хардкодить с iframe.
Конкретно этот способ с '<ajax:BOX_BODY>' я нашел в книге еще по APEX 3, возможно для новой 4й версии найдется более удачный вариант, вроде такого .
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37953930
tBikRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
haXbat,

Сейчас попробую.
Еще всплыла одна проблемка, допустим на Ajax Report2 есть строка поиска, то при нашем методе, Dirty Solution ругается, что item поиска не с той страницы.
Я там сделал можно глянуть.
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37953945
tBikRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
haXbat,

Не такой вариант у меня не прокатил), я тоже сначала так сделал, но значение у меня хранится в HiddenIteme (сессионная переменная).
Пришлось выкрутиться так:
1. В Page Load добавляем JS скрипт
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
var ro = new htmldb_Get(null,$v('pFlowId'),'APPLICATION_PROCESS=SET_DEP_PROF_IDs',$v('pFlowStepId'));
gReturn = ro.get('XML');
var s = $x('P9_SELECTED_TYPE');
var n = gReturn.getElementsByTagName("input").length;
for (i = 0; i < n; i++){
  var inp = gReturn.getElementsByTagName("input")[i];
  s.setAttribute("dep_id", inp.getAttribute("dep_id"));
  s.setAttribute("prof_id", inp.getAttribute("prof_id"));
}


2. Создаем onDemand process (у меня там еще :P9_DEP_ID и :P9_PROF_ID получают данные с другой страницы)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
begin
  :P9_DEP_ID := :P8_DEP_ID;
  :P9_PROF_ID := :P8_PROF_ID;
  :P9_SELECTED_TYPE := 0;
  owa_util.mime_header('text/xml, charset = utf-8', false);
  htp.p('Cashe-control:no-cache');
  htp.p('Pragma:no-cache');
  owa_util.http_header_close;
  htp.p('<input type = "text" dep_id = "'||:P9_DEP_ID||'" prof_id = "'||:P9_PROF_ID||'"></input>');
end;


3. Меняем основную JS функцию
Код: javascript
1.
2.
3.
4.
5.
6.
7.
var ro = new htmldb_Get(null,$x('pFlowId').value,null,$v("P9_SELECTED_TYPE"));
  ro.add('P10_DEP_ID', $x("P9_SELECTED_TYPE").getAttribute("dep_id"));
  ro.add('P10_PROF_ID', $x("P9_SELECTED_TYPE").getAttribute("prof_id"));
  gReturn = ro.get(null,'','');
  ro = null;
  html_GetElement('report_holder').innerHTML = gReturn;
  return;
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37954030
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tBikRuhaXbat,

Сейчас попробую.
Еще всплыла одна проблемка, допустим на Ajax Report2 есть строка поиска, то при нашем методе, Dirty Solution ругается, что item поиска не с той страницы.
Я там сделал можно глянуть.

Вот. Я сделал одну строку поиска сразу для двух отчетов (значение переменной записывается в application item G_SEARCH).
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37954467
tBikRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
haXbat,

Все отлично, но действительно сталкнулся с неработающей пагинацией. Что почитать, как исправить посоветуйте пожалуйста.
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37954598
tBikRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://apex.oracle.com/pls/otn/f?p=54245:5
При установки Enable Partial Page Refresh > No. Pagination перебрасывает на страницу самого репорта, а не открывает его в Dirty Solution.
При установки Enable Partial Page Refresh > Yes. Не происходит ничего.
Задача: при клике по номеру страницы открыть репорт с нужной страницей в Dirty Solution
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37955483
haXbat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tBikRuЗадача: при клике по номеру страницы открыть репорт с нужной страницей в Dirty Solution
Способ с '<ajax:BOX_BODY>' использовал для запросов, возвращающие всякого рода итоговые значение, а не большие справочники. Поэтому проблема пагинации не стояла - на экране показывалась сразу вся выборка. А конкретно для вашего случая можно вернутся к решению, где несколько репортов располагаются на одной странице - с помощью dynamic actions их прятать/показывать/динамически обновлять. Тогда появится пагинация, но при первоначальной загрузке страницы будут выполняться сразу все запросы, что может быть неприемлемо, когда их не 2, а значительно больше.
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37960436
tBikRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При использовании данного метода столкнулся с проблемами в IE. Не работает innerHTML.
Может кто-то знает решение проблемы?
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37960505
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tBikRu,

Изучайте и используйте встроенную библиотеку jQuery.
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37960642
tBikRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SvDevtBikRu,

Изучайте и используйте встроенную библиотеку jQuery.
Изучаю и что могу использую.
Condition Type не работает без сабмита, есть способ сделать так, чтоб репорт появлялся и выборка происходила только в тот момент, когда выбран определенный radio input?
Попробывал настроить Dynamic Action, на изменение radio itema:
Event - change
Selection Type - item
Item - P9_TYPE
Condition - No Condition
И два TrueAction
Action - Execute PL/SQL CODE
PL/SQL CODE - null;
Page Item to Submit - P9_TYPE
Action - Execute JS
Code - $a_report(id моего репорта);
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37960764
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tBikRuЗадача: при клике по номеру страницы открыть репорт с нужной страницей в Dirty Solution

Я вот не пойму: зачем?

Если не хочется загружать данные всех отчётов на одной странице, допишите к запросам условие:
Код: plsql
1.
   and :P_REPORT_SELECTOR = 'REPORT_NAME'


Всё, выполняться будет запрос, отчёт с которым выбрал пользователь.

Укажите у регионов с отчётами соответствующие Static ID, CSS Classes, стиль:
Код: css
1.
display: none;


Пока пользователь не выберет, регионы с отчётами будут скрыты.

Допишите Вашу радиокнопку в Page Items to Submit, при обновлении отчёта её значение будет передаваться в БД.

При изменении значения радиокнопки через Dynamic Action сохраняйте это значение в сессии, обновляйте нужный отчёт, скрывайте регионы с Вашим классом, показывайте с выбранным ID.

Можете у себя в демке глянуть на страницу 8. Кроме написанного выше я ещё изменил шаблон региона Reports Region, добавив #REGION_CSS_CLASSES#.
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37961234
tBikRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
suPPLerЕсли не хочется загружать данные всех отчётов на одной странице, допишите к запросам условие:
Код: plsql
1.
   and :P_REPORT_SELECTOR = 'REPORT_NAME'


Всё, выполняться будет запрос, отчёт с которым выбрал пользователь.

Я наверно сильно туплю, но я добавил к выборке репорта и он стал постоянно выдавать nodatafound.
Код: plsql
1.
   and :P9_TYPE = 10


suPPLerУкажите у регионов с отчётами соответствующие Static ID, CSS Classes, стиль:
Код: css
1.
display: none;


Пока пользователь не выберет, регионы с отчётами будут скрыты.
Допишите Вашу радиокнопку в Page Items to Submit, при обновлении отчёта её значение будет передаваться в БД.
При изменении значения радиокнопки через Dynamic Action сохраняйте это значение в сессии, обновляйте нужный отчёт, скрывайте регионы с Вашим классом, показывайте с выбранным ID.
Можете у себя в демке глянуть на страницу 8. Кроме написанного выше я ещё изменил шаблон региона Reports Region, добавив #REGION_CSS_CLASSES#.
StaticID, display: none указал, все остальное не получилось). Apex 4.0.2 как добавить Substitution string к шаблону региона я не нашел. Остальное вроде понятно, но без #REGION_CSS_CLASSES# ничего не работает
...
Рейтинг: 0 / 0
Передача параметров без submita
    #37961458
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tBikRuЯ наверно сильно туплю, но я добавил к выборке репорта и он стал постоянно выдавать nodatafound.
Так и должно быть. У Вас же не передаётся значение P9_TYPE, когда обновляется отчёт. Я описал все шаги одного решения. Чтобы оно сработало, придётся выполнить их все :

0. Создать на одной странице регион с радиокнопкой для выбора отчёта, регионы с отчётами. В статическом LOV радиокнопки перечислить значения, которые будут обозначать отчёты. Например: MGR (Менеджеры), DEPT (Подразделения).
1. В запросах отчётов проверять соответствующее значение радиокнопки. В отчёте "Менеджеры":
Код: plsql
1.
2.
3.
4.
select ...
  from ...
 where ...
   and :P_RADIOBUTTON = 'MGR'

Название элемента-радиокнопки (P_RADIOBUTTON) вписать в Page Items to Submit в атрибутах регионов.
2. Указать Static ID у регионов с запросами. Я для удобства использовал те же значения, которые выбираются радиокнопкой: DEPT, MGR.
3. Указать стиль, чтобы не показывать при загрузке страницы регионы с пустыми отчётами.
4. Указать класс у регионов. Поскольку #REGION_CSS_CLASSES# появился только в 4.2, то можно скопировать шаблон Reports Region и дописать в новом шаблоне в class самого верхнего div удобное название класса. Общий класс у регионов используется исключительно для удобства, можно в селекторе из JavaScript-кода в Dynamic Action использовать набор ID через запятую:
Код: javascript
1.
$("#DEPT,#MGR").hide();


5. На изменение значения радиокнопки повесить DA для обновления выбранного отчёта и его отображения. Посмотрите в действия (Dynamic Actions) на восьмой странице, на условия выполнения и JS-код, который выполняется.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Передача параметров без submita
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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