Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Добавление строк в Tabular Form / 25 сообщений из 53, страница 1 из 3
24.11.2015, 12:35
    #39111970
Весёлый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
Необходимо добавлять строку в таблицу, заполненную на основании уже имеющихся (что-то вроде частичного копирования) . На часть строк я добавил кнопки
Код: javascript
1.
'<input type="button" value="Добавить самосвал" onClick="javascript:InsertRow('||DATETOCH||', '||SHOV||', '||LOADTYPEID||', '||SHIFT||');">'


(см. скриншот)

На кнопках висит функция
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function InsertRow(dt, shov, lt, sh)
{
 addRow();
 var j = document.wwv_flow.f01.length;
 var NewRow = lpad(j, 4, '0');
 
 apex.item('f04_'+ NewRow).setValue(sh);
 apex.item('f05_'+ NewRow).setValue(shov);
 apex.item('f06_'+ NewRow).setValue(lt);
}



В принципе, строки добавляются, но есть три момента:
1. Строка добавляется в конец формы, что не очень удобно для пользователя. Как можно её перенести в нужный блок до сохранения?
2. Функция отказывается принимать в себя дату (DATETOCH) - выдаёт ошибку "missing ) after argument list" (при замене на другое значение всё работает).
3. В колонке "Дата" продолжает висеть иконка Date Picker. Как от неё можно избавиться? (от остального избавился с помощью hide())
...
Рейтинг: 0 / 0
24.11.2015, 13:08
    #39112016
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
Весёлый,

Насколько я понимаю, это Апекс 5.0.
1. Чтобы добавить строчку в нужное место, вам нужно хорошо изучить HTML разметку, javascript (jQuery), наизусть згначть структуру табуляр формы (Наименование элемнтов, корректное их вставка). И добавлять вручную.
2. Дата в Javascipte и то что вы видите на экране это разные вещи, у вас когда вместо DATETOCH, подставляется какое то число с двумя точками, он не знает что ЭТО, ты мне такое суешь сюда.
3. См. пункт 1.
...
Рейтинг: 0 / 0
24.11.2015, 13:12
    #39112022
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
blkangel,

Хотя, пункт первый можно упростить, когда добавляется строчка вниз, перенести ее в нужное место и поменять все индыксы у других строк... Легче, но все равно геморойно.
...
Рейтинг: 0 / 0
25.11.2015, 06:37
    #39112798
Весёлый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
blkangel,

Апекс 4.2.
1. Т.е. полностью переписать addRow?
2. Пробовал добавлять to_char(DATETOCH, 'dd.mm.yyyy') и to_date(DATETOCH, 'dd.mm.yyyy') - результат тот же. Каким образом правильно передавать дату?
...
Рейтинг: 0 / 0
25.11.2015, 08:19
    #39112805
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
Весёлый,
Пересмотрите задачу. То что вы хотите я нигде не видел. Таблица это матрица, а не мусорница кнопок.
...
Рейтинг: 0 / 0
25.11.2015, 08:54
    #39112816
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
Весёлыйblkangel,

Апекс 4.2.
1. Т.е. полностью переписать addRow?
2. Пробовал добавлять to_char(DATETOCH, 'dd.mm.yyyy') и to_date(DATETOCH, 'dd.mm.yyyy') - результат тот же. Каким образом правильно передавать дату?

1. Да, либо как я и написал, добавленную строчку (после addRow()) на js, переместить в нужное место.
2. Если вы дату как текст хотите обрабатывать в JS, достаточно ковычки добавить. Это качается всех параметров.
Код: plsql
1.
'<input type="button" value="Добавить самосвал" onClick="javascript:InsertRow('''||DATETOCH||''', '''||SHOV||''','' '||LOADTYPEID||''', '||SHIFT||');">'
...
Рейтинг: 0 / 0
25.11.2015, 09:39
    #39112847
heavyside
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
Весёлый,

1. blkangel с переносом нормальный вариант предложил. Кстати возможно, индексы менять и не понадобится,а перенос делается легко через jquery detach()
2. да, скорее всего кавычки.
3. Попробуйте использовать $x_Hide('DATA_ITEM_ID') (как раз апексовая доработка, чтобы скрывать айтемы с лейблами и вместе с иконками PopUp и DatePicker, мне правда казалось, что в некоторых релизах и местах не работало, но вот сейчас в 4.2.2 отработала норм), в документации описана , может принимать не только айдишник
...
Рейтинг: 0 / 0
25.11.2015, 10:43
    #39112894
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
heavysideВесёлый,

3. Попробуйте использовать $x_Hide('DATA_ITEM_ID') (как раз апексовая доработка, чтобы скрывать айтемы с лейблами и вместе с иконками PopUp и DatePicker, мне правда казалось, что в некоторых релизах и местах не работало, но вот сейчас в 4.2.2 отработала норм), в документации описана , может принимать не только айдишник

Только надо понимать, что функция $x_Hide сделана для одиночных элементов, а не для элементов внутри табуляра...
...
Рейтинг: 0 / 0
25.11.2015, 11:40
    #39112965
heavyside
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
blkangel,

Да, возможно как раз в гридах у меня она и не работала. Тогда в зависимости от разметки можно написать например:
$('#f06_0001').closest('td').children().hide();
или
$('#f06_0001').parent().children().hide();
...
Рейтинг: 0 / 0
25.11.2015, 11:48
    #39112978
Весёлый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
heavyside,

1. А каким образом можно передать в селектор detach новообразованную строку?
2. Да, кавычки помогли :)
3. С третьим решил не заморачиваться - раз уж всё равно значение будет передаваться из имеющейся строки, то можно просто использовать не DatePicker, а Text Field :)
...
Рейтинг: 0 / 0
25.11.2015, 12:07
    #39112992
heavyside
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
Весёлый,

надо смотреть разметку и выяснять какие признаки для новой строки характерны. Может класс, айдишник или расположение(последняя строка в таблице). Как вариант, если исходить только из того, что вы писали:

var new_row = $('#f04_'+ NewRow).closest('tr').detach();

но лучше поизучать разметку, может есть более надёжный(не зависящий от наличия коллекции f04 на странице) признак
...
Рейтинг: 0 / 0
25.11.2015, 18:04
    #39113462
Casufi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
Вообще табуляр форма - дурная штука, слишком много сюрпризов она готовит, когда начинаешь делать шаг влево/вправо.
1) Есть ограничение на размер заголовка, который можно передать на сервер, если невзначай превысите, при сабмите будет происходить непонятная хрень вместо отработки формы.
2) Размерности массивов по столбцам никак не синхронизированы, если вы в одном из столбцов хотите закрыть часть строк от редактирования, получите два несинхронизированных масива.

ИМХО если хочется сделать чего то сложнее обічной табулар форм, копайте в сторону самописных или jQuery подобных гридов и делайте редактирование через AJAX и коллекции.
...
Рейтинг: 0 / 0
25.11.2015, 18:14
    #39113471
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
CasufiВообще табуляр форма - дурная штука,
+1
плюс ещё можно работать по MVC - добавил на сервер, команда не перерисовку контрола - всё обновилось по свежим данным.
...
Рейтинг: 0 / 0
25.11.2015, 18:22
    #39113478
Casufi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
Petro123добавил на сервер, команда не перерисовку контрола
Это уже не MVC, а хрень какая то. На апексе такое через Ж нужно реализовывать.
...
Рейтинг: 0 / 0
25.11.2015, 19:13
    #39113515
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
Casufi,
Не подходи буквально.
Вместо добавления на клиенте, инсерт в Модель. А view refresh. Контроллер в apex все отработает.
...
Рейтинг: 0 / 0
26.11.2015, 09:29
    #39113745
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
CasufiВообще табуляр форма - дурная штука, слишком много сюрпризов она готовит, когда начинаешь делать шаг влево/вправо.
1) Есть ограничение на размер заголовка, который можно передать на сервер, если невзначай превысите, при сабмите будет происходить непонятная хрень вместо отработки формы.
2) Размерности массивов по столбцам никак не синхронизированы, если вы в одном из столбцов хотите закрыть часть строк от редактирования, получите два несинхронизированных масива.

ИМХО если хочется сделать чего то сложнее обічной табулар форм, копайте в сторону самописных или jQuery подобных гридов и делайте редактирование через AJAX и коллекции.

Соглашусь, тут очень хорошо нужно разбираться как структуре табуляра, как воспринимает сервер при ее отправке.
Четко надо понимать, что при написании какого то своего JS для наполнения данных в строки табуляра, что в таком JS скрипте не должны использоваться индексы f01-f50. Потому что это все сразу поплывет при добавлении, перемещении столбцов.
...
Рейтинг: 0 / 0
26.11.2015, 09:31
    #39113748
Весёлый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
heavyside,

Не совсем понял - этот код добавлять прямо в InsertRow? Немного теряюсь в jQuery...
...
Рейтинг: 0 / 0
26.11.2015, 10:26
    #39113788
heavyside
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
Весёлыйheavyside,

Не совсем понял - этот код добавлять прямо в InsertRow? Немного теряюсь в jQuery...

да, я бы попробовал туда. Но это удаление строки из разметки, вам ещё вставку в нужное место. Читайте доку jquery, экспериментируйте)

CasufiВообще табуляр форма - дурная штука, слишком много сюрпризов она готовит, когда начинаешь делать шаг влево/вправо.
+1. Так ни разу и не задействовал кажись, только каждый релиз смотрел что нового. Лучше уж интерактивный отчёт задействовать и всю обработку написать самому. Ну или обычный репорт.
...
Рейтинг: 0 / 0
26.11.2015, 10:49
    #39113811
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
heavysideТак ни разу и не задействовал кажись
там единственное мне нравится, пакетное редактирование. Сразу несколько строк в пакете.
Но навешивать лапшу кода на него и модернизировать IMHO ну нафиг.
...
Рейтинг: 0 / 0
26.11.2015, 10:59
    #39113821
Vladml
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
В 5.1 будет редактируемый IR
http://nuijten.blogspot.nl/2015/11/apex-51-features-shown-at-doag.html
...
Рейтинг: 0 / 0
26.11.2015, 11:40
    #39113849
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
Vladml,
вот это по человечески. А то даже дизайн у табуляр - Г.
...
Рейтинг: 0 / 0
26.11.2015, 11:40
    #39113850
heavyside
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
VladmlВ 5.1 будет редактируемый IR
http://nuijten.blogspot.nl/2015/11/apex-51-features-shown-at-doag.html

Да, называться будет Interactive Grid. Вроде ещё мелькала информация, что можно будет все операции из менюшки делать программно.
...
Рейтинг: 0 / 0
01.12.2015, 09:23
    #39116976
Весёлый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
heavyside,

возник ещё вопрос - а какие есть ограничения при использовании jQ в Region Header? У меня изначально там были прописаны две функции, а при попытке добавить третью появляется ошибка "ORA-01461: can bind a LONG value only for insert into a LONG column".

Подозреваю, что это ограничение на число символов, но хотелось бы знать наверняка :)
...
Рейтинг: 0 / 0
01.12.2015, 09:47
    #39116987
heavyside
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
Весёлыйheavyside,

возник ещё вопрос - а какие есть ограничения при использовании jQ в Region Header? У меня изначально там были прописаны две функции, а при попытке добавить третью появляется ошибка "ORA-01461: can bind a LONG value only for insert into a LONG column".

Подозреваю, что это ограничение на число символов, но хотелось бы знать наверняка :)

Насколько я знаю, содержимое никак не анализируется кроме как браузером при выводе страницы. Так что да, ограничение на длину. Что-то длинноваты у вас функции) Лучше в файл выносить.
...
Рейтинг: 0 / 0
01.12.2015, 09:54
    #39116995
Весёлый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление строк в Tabular Form
heavyside,

откровенно говоря, часть из них скопипащенны из трудов моего предшественника. Возможно у меня когда-нибудь даже дойдут руки, чтобы их сократить, но не сегодня :)

Что подразумевается под "в файл выносить"? Прописывать в блоке Page - Function and Global Variable Declaration?
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Добавление строк в Tabular Form / 25 сообщений из 53, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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