|
Save Session State
|
|||
---|---|---|---|
#18+
Нужна помощь в следующем: Есть на экране 4 поля, 1)Number Field (P1_Client_ID) 2)Date Picker (P1_BEGIN_DATE) 3)Display Only (P1_DATE_END) 4)Number Field (P1_DAYS_COUNT) и две кнопки 1)Создать 2)Рассчитать Я ввожу дату в P1_BEGIN_DATE и количество дней в P1_DAYS_COUNT. При нажатие на кнопке "Рассчитать" я получаю день, когда работник выйдет на работу, в P1_DATE_END. Но поскольку при нажатие на кнопку происходит Submit, то поля P1_Client_ID и P1_DAYS_COUNT обнуляются, а это не есть гуд. Как сделать так что бы в этих полях оставались значения? APEX 4.0.0.00.46, Browser IE9 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2011, 14:00 |
|
Save Session State
|
|||
---|---|---|---|
#18+
Daedroth, Расчет идет через Page Processing, я правильно понимаю? Если так, то лучше всего будет переделать функционал на dynamic action - рассчитывать можно будет без сабмита всей страницы, с помощью AJAX. Так же это гораздно будет быстрее для конечного пользователя) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2011, 14:13 |
|
Save Session State
|
|||
---|---|---|---|
#18+
haXbat, можно подробней? Я просто не очень знаком с аяксом. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2011, 14:20 |
|
Save Session State
|
|||
---|---|---|---|
#18+
Замечу что для расчёта я использую SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2011, 14:24 |
|
Save Session State
|
|||
---|---|---|---|
#18+
Daedroth, Чтобы стандартная апексовая кнопка не сабмитила страницу, а стартовала dynamic action создайте собственный темплейт для кнопки, как копию используемого, добавьте секцию #BUTTON_ATTRIBUTES# (если ее нет в темплейте), удалите onclick="#LINK#" (если есть). Далее в Button Display Attributes выберите ранее созданный темплейт и в Attributes допишите id="MY_BUTTON". Потом связываем новый dynamic action с id кнопки расчета: Create Dynamic Action>Advanced>Event - Click,Selection Type - DOM Object,DOM Object - MY_BUTTON> Action - Set value>SQL код расчета>P1_DATE_END Вот с картинками доки - раз и два ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2011, 15:21 |
|
Save Session State
|
|||
---|---|---|---|
#18+
haXbatдобавьте секцию #BUTTON_ATTRIBUTES# (если ее нет в темплейте), Я не совсем понял как её добавлять. Что писать надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2011, 15:54 |
|
Save Session State
|
|||
---|---|---|---|
#18+
Daedroth, Вот пример: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2011, 16:46 |
|
Save Session State
|
|||
---|---|---|---|
#18+
haXbat, Я вроде всё делаю правильно, но кнопка не реагирует и ничего не считается ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2011, 16:59 |
|
Save Session State
|
|||
---|---|---|---|
#18+
Всё-таки я придерживаюсь во мнении, что аякс для более-менее продвинутых пользователей, которые готовы работать с яваскриптом и html. Без аякса решается так: 1. Либо не очищать их. т.е. смотрите тип source в этих item's (always replaced... сменить на второй), скорее всего, либо убрать процесс типа reset page. И наоборот при переходе в ссылке указывать reset page, чтобы старые значения очистились. 2. Либо выполнить процесс в onload: Fetch Row..., который их вычисляет по значению item с PK или ROWID. Смотрите условия, при которых этот процесс срабатывает. Соответственно указанный item при этом не должен обнуляться (пункт выше), либо чтоб переприсваивался в branches скажем. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2011, 18:52 |
|
Save Session State
|
|||
---|---|---|---|
#18+
SvDevВсё-таки я придерживаюсь во мнении, что аякс для более-менее продвинутых пользователей, которые готовы работать с яваскриптом и html. Без аякса решается так:... Я не совсем понял где там был аякс. Если конечно динамик актион не есть он. А ваш вариант мне не подходит, потому что мне нужно что бы в конечном итоге всё стиралось, но не при нажатии кнопки расчета. haXbat, Я всё сделал так как вы описали, задал атрибутом id="Calculate" и в динамик актионе в DOM написал Calculate, актион поставил на Set Value и в Set Type поставил SQL Statement (куда ввел свой SQL). Но ничего не происходит. Скажите что тут не правильно или может вы что-то пропустили. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2011, 08:08 |
|
Save Session State
|
|||
---|---|---|---|
#18+
DaedrothЯ не совсем понял где там был аякс. Если конечно динамик актион не есть он. А ваш вариант мне не подходит, потому что мне нужно что бы в конечном итоге всё стиралось, но не при нажатии кнопки расчета. Да, Dynamic action в некоторых случаях и есть аякс. Как запрограммируете, так и будет, нужно лишь чуть-чуть разобраться с теми типами процессов и задать нужные condition display. DaedrothhaXbat, Я всё сделал так как вы описали, задал атрибутом id="Calculate" и в динамик актионе в DOM написал Calculate, актион поставил на Set Value и в Set Type поставил SQL Statement (куда ввел свой SQL). Но ничего не происходит. Скажите что тут не правильно или может вы что-то пропустили. Прежде чем спрашивать, убедитесь, что: 1. на заданную кнопку действительно в исходном html присутствует id="CALCULATE" 2. в dynamic action дейст-но сделано на событие нажатия кнопки, которое вы выполняете. 3. в браузере не возникает яваскриптовых ошибок по нажатию 4. SQL действительно меняет ваш item. 5. Специально обратите внимание на поле Page Items to Submit , аякс не производит Submit А почему я говорю подумать, перед тем как использовать аякс? Нет смысла делать в одном месте по-особому, если в других сделано по-другому. Если пользователи привыкли, что по кнопке происходит сабмит, то лучше использовать сабмит, т.е. если же вы заменяете Submit на аякс для всех кнопок подобного типа, тогда да, иначе же интерфейс сделанный по-разному хуже всего. Ну а Submit нельзя везде заменить на чистый dynamic action, там много яваскрипта может понадобиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2011, 09:15 |
|
Save Session State
|
|||
---|---|---|---|
#18+
К вышеописанному стоит еще добавить, что использование инструментов web-разработки ( firebug for firefox к примеру) существенно сократит время отладки подобных dynamic action. В случае фаербага вам нужно включить вкладку консоль и проверить - нет ли ошибок javascript, выполняется ли запрос к серверу по нажатию на кнопку, не возвращает ли запрос ошибок? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2011, 09:36 |
|
Save Session State
|
|||
---|---|---|---|
#18+
haXbatК вышеописанному стоит еще добавить, что использование инструментов web-разработки ( firebug for firefox к примеру) существенно сократит время отладки подобных dynamic action. В случае фаербага вам нужно включить вкладку консоль и проверить - нет ли ошибок javascript, выполняется ли запрос к серверу по нажатию на кнопку, не возвращает ли запрос ошибок? А я о чём говорю. Всё выше перечисленное я проверял 100 раз и сегодня проверил 101-ый. При нажатие на кнопку ничего не происходит вообще. То есть никаких запросов к серверу никаких яваскриптов ничего. Тишина как в танке. В хтмл id="Calculate" есть, в динамик экшен Event ->Click Selection Type ->DOM Object DOM Object ->CALCULATE Page Items to Submit пустое Action -> Set Value Set Type -> SQL Statement SQL Statement -> мой SQL Affected Elements: Selection Type -> Item(s) Item(s) -> P4_DATE_END в хтмл также есть Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2011, 10:40 |
|
Save Session State
|
|||
---|---|---|---|
#18+
Самое интересное то, что при сабмите он делает расчет, не смотря на то что я удалил кампютишен. То есть динамик экшен срабатывает при сабмите. Это как???? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2011, 10:52 |
|
Save Session State
|
|||
---|---|---|---|
#18+
Daedroth, Javascript чувствителен к регистру, поэтому DOM Object ->CALCULATE не привязывается к id="Calculate" . ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2011, 11:16 |
|
Save Session State
|
|||
---|---|---|---|
#18+
haXbatDaedroth, Javascript чувствителен к регистру, поэтому DOM Object ->CALCULATE не привязывается к id="Calculate" . Я тоже так подумал, поменял но реакции ноль. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2011, 11:27 |
|
Save Session State
|
|||
---|---|---|---|
#18+
Daedroth, Вот рабочий пример на apex.oracle.com, можно зайти под разработчиком и посмотреть исходный код. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2011, 12:03 |
|
Save Session State
|
|||
---|---|---|---|
#18+
DaedrothСамое интересное то, что при сабмите он делает расчет, не смотря на то что я удалил кампютишен. То есть динамик экшен срабатывает при сабмите. Это как???? Потому что еще раз читаем SvDev5. Специально обратите внимание на поле Page Items to Submit , аякс не производит Submit Читайте комментарий к полю что он делает и что туда вписывать ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2011, 12:49 |
|
Save Session State
|
|||
---|---|---|---|
#18+
SvDev, Вы меня наверно не поняли. Мне не нужно что бы происходил сабмит. С сабмитом я могу и обычным кампютишоном сделать это. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2011, 09:08 |
|
Save Session State
|
|||
---|---|---|---|
#18+
В запросе у вас конечно же P1_BEGIN_DATE, P1_DAYS_COUNT. Третий раз носом тыкать не буду, Изучайте как работает аякс. И делайте яваскрипт процедуру с вызовом htmldb_Get, всё будет работать. Примеры здесь http://apex.oracle.com/pls/otn/f?p=11933:63 Еще могу порекоммендовать книжку, Pro Oracle Application Express. Хотя бы появятся некоторые представления, как работает ajax в апексе. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2011, 10:26 |
|
|
start [/forum/topic.php?fid=50&msg=37488420&tid=1876362]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 123ms |
0 / 0 |