|
|
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
Есть задача, в качестве решения которой необходимо сгенерировать на старнице некое кол-во динамических полей ввода, а после того, как пользователь с ними поработает, одним махом сохранить все изменения в БД. Отсюда вопросы: Какие нюансы следует учесть при генерации полей ввода? Каким образом их обработать для сохранения в БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 16:05 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
dvksqlruКакие нюансы следует учесть при генерации полей ввода? Что пользователь при должном умении сам может создать поля, подменить в них типы или списки значений. dvksqlruКаким образом их обработать для сохранения в БД? А как создавать собрались, через APEX_ITEM? Тогда обрабатывайте через apex_application.g_fNN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 21:24 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
suPPLerА как создавать собрались, через APEX_ITEM? Тогда обрабатывайте через apex_application.g_fNN. Создавать предполагается примерно так: Код: plsql 1. Про нюансы - я предполагаю, что необходимо на поля навесить какие-то атрибуты для яваскрипта. А вот какие атрибуты и пример как с ними работать бы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 21:41 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
dvksqlruСоздавать предполагается примерно так: При отправке на сервер всё это уйдёт либо в APEX_APPLICATION.accept, либо в пользовательскую процедуру. Если Вы не собираетесь писать последнюю, то советую посмотреть на спецификацию первой. Её параметры типа table of — это name в Ваших тегах INPUT. Можно выводить поля с name="fNN", а типы полей указывать в скрытых полях с name="fNN+1". Тогда применим мой предыдущий комментарий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 03:12 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
suPPLer, Попробую описать подробнее процесс формирования элементов: Код: plsql 1. 2. 3. 4. И все это предполагается вывести с помощью отчета, сформировав таким образом группу элементов. Т.е. APEX_ITEM использовать не предполагается. Я примерно понимаю, как просмотреть все элементы JavaScriptом, но как из цикла JavaScript организовать вызов PL SQL, осуществляющий insert или update не понимаю. Вот, собственно в чём и вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 15:04 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 15:15 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
kasikdvksqlru, htmldb_Get kasik, Кр. сест. тал:) А если серьёзно, то как прочитать значения сих айтемов примерно понятно, а как вызвать из JavaScript DML -нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 15:23 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
dvksqlruТ.е. APEX_ITEM использовать не предполагается. А почему? Он за Вас проставит соответствующие теги и атрибуты. dvksqlruЯ примерно понимаю, как просмотреть все элементы JavaScriptом, но как из цикла JavaScript организовать вызов PL SQL, осуществляющий insert или update не понимаю. Вам нужно будет передавать параметры со значения в вызов процедуры на сервере. В конце концов, AJAX через серверную часть (EPG, mod_plsql, APEX Listener) дёргает WWV_FLOW.accept, WWV_FLOW.show_page или Вашу собственную процедуру с соответствующими фактическими параметрами. Если заглянете в #IMAGE_PREFIX#/libraries/apex/apex_4.2, то на примере htmldb_Get можете посмотреть, как происходит обращение к серверу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 19:30 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
suPPLerdvksqlruТ.е. APEX_ITEM использовать не предполагается. А почему? Он за Вас проставит соответствующие теги и атрибуты. Се ля ви, я не архитектор в данной задаче. suPPLerdvksqlruЯ примерно понимаю, как просмотреть все элементы JavaScriptом, но как из цикла JavaScript организовать вызов PL SQL, осуществляющий insert или update не понимаю. Вам нужно будет передавать параметры со значения в вызов процедуры на сервере. В конце концов, AJAX через серверную часть (EPG, mod_plsql, APEX Listener) дёргает WWV_FLOW.accept, WWV_FLOW.show_page или Вашу собственную процедуру с соответствующими фактическими параметрами. Если заглянете в #IMAGE_PREFIX#/libraries/apex/apex_4.2, то на примере htmldb_Get можете посмотреть, как происходит обращение к серверу. Если честно, то рассчитываю на более простой подход, о котором просто не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 20:00 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
dvksqlruЕсли честно, то рассчитываю на более простой подход, о котором просто не знаю. Мне жаль, но его нет. Вам так или иначе нужно будет передать на сервер и обработать пары ключ-значение (поле-ввод). В виде массивов fNN или переменных xNN, в виде объекта, сериализованного в каком-нибудь формате (JSON, XML) значения одного из параметров вышеупомянутых процедур, в виде файла. И если первый вариант Oracle сам преобразует в удобный к использованию вид -- коллекции PL/SQL, то другие потребуют дополнительных усилий. Сложности, кстати, невелики. При использовании APEX_ITEM на самой странице ничего делать не потребуется, если нужны поля встроенных типов. dvksqlruСе ля ви, я не архитектор в данной задаче. IMHO, Ваш архитектор слишком много на себя берёт, ставя ограничения для разработчика на подмножество средств реализации вместо описания интерфейсов, критериев производительности и безопасности. :) "Не смейте использовать сложение и цикл FOR в реализации!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 21:53 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
dvksqlru, Из вашего описания не понятно, в каком месте у вас возникают затруднения. Разбейте задачу по шагам, например, простейший вариант: 1. Генерируете html элементов 1.1. Правильно расставляете им атрибут name="fxx" 2. Добавляете кнопку с submit 3. Пишите обработчик на стороне сервера: 3.1 динамически формируете строку с dml из apex_application.g_fxx 3.2 вызываете execute immediate Это вариант без яваскрипта. Нужен именно Аякс ? Значит вместо 2 будет кнопка с аякс запросом: 2.1 собираете элементы формы, способов много, хотя бы через $('[name="f01"]').each легко получите массив элементов f01 и т.д. 2.2 при желании можно собрать в одну переменную в виде Json/XML, на сервере соответственно парсить, если не влезет в 32767 поищите скрипт кусочной передачи в clob 2.3 пишите Аякс запрос, способов масса, htmldb_get лишь один из многочисленных, поищите примеры с передачей массивов Если сильно лениво собирать элементы погуглите по serialize , но не гарантирую, что будет работать с новыми версиями апекса т.к. не пробовал ну или можно попробовать через недавно вышедший плагин В общем определитесь, каким способом будете делать, дальше уже должно хорошо гуглиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 23:57 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
dvksqlru, странная задача. Хорошо сохранять простынь полей в таблице Excell. Ну, или скриншотом)). Работать то потом как с ними? Бизнес-логикой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 09:41 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
suPPLerdvksqlruСоздавать предполагается примерно так: При отправке на сервер всё это уйдёт либо в APEX_APPLICATION.accept, либо в пользовательскую процедуру. Если Вы не собираетесь писать последнюю, то советую посмотреть на спецификацию первой. Её параметры типа table of — это name в Ваших тегах INPUT. Можно выводить поля с name="fNN", а типы полей указывать в скрытых полях с name="fNN+1". Тогда применим мой предыдущий комментарий. А что вы понимаете под пользовательской процедурой? Разве можно миновать апексовую процедуру wwv.flow.accept? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 13:37 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
blkangel, под пользовательской процедурой я понимаю её самую. Начать читать можно отсюда: Oracle® Fusion Middleware User's Guide for mod_plsql (особенно третью главу), Oracle® Application Express Administration Guide: 2.4.2.15 Restricting Access to Oracle Application Express by Database Access Descriptor (DAD) . Миновать "апексовую процедуру wwv.flow.accept" можно обращением к другой в URL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:55 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
dvksqlru, есть вариант ещё отправлять данные методом POST в настроенный ресурс REST... но это совсем не простой подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:57 |
|
||
|
Работа с динамическими элементами
|
|||
|---|---|---|---|
|
#18+
suPPLer, Какой приколист, а зачем Апекс тогда нужен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 16:56 |
|
||
|
|

start [/forum/topic.php?fid=50&fpage=37&tid=1875214]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 380ms |

| 0 / 0 |
