Гость
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Simple Checkbox в Report-e / 14 сообщений из 14, страница 1 из 1
19.04.2011, 12:15
    #37222263
J.d
J.d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
Всем привет,

юзаю апекс, такая ситуация - вывожу отчет, столбец id настроил таким образом что для каждой записи вместо значения выводится checkbox - Display as: simple checkbox.

Заглянув в html код вижу что каждой checkbox записан в виде:

input type="checkbox" name="f01_NOSUBMIT" value="" id="f01_0007_01" onClick="if (this.checked) {apex.jQuery('#f01_0007').val('');} else {apex.jQuery('#f01_0007').val('');}"

input type="hidden" name="f01" value="" id="f01_0007"

хочу собственно в процессе на обработку сабмит кнопки пробежаться по этому "массиву" отмеченных записей с последующей обработкой, но никак не приложу ума как это сделать?

кто знает, подскажите, спасибо
...
Рейтинг: 0 / 0
19.04.2011, 12:45
    #37222362
SvUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
Делается это через коллекции, примеры использования есть в документации:
http://download.oracle.com/docs/cd/E17556_01/doc/apirefs.40/e15519/apex_app.htm#CHDDADIE
В случае с check box в коллекции будут не все значения на странице, а только отмеченные флажки,

Вот пара примеров от меня:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
DECLARE
   p_update_cnt number :=  0 ;
begin
  for i in  1  .. apex_application.g_f31.count loop

    if apex_application.g_f33(i) is not null and 

       -- т.е. старое md5 не совпадает с md5 уже отредактированных данных
       wwv_flow_item.md5( apex_application.g_f34(i),
                          apex_application.g_f35(i),
                          apex_application.g_f37(i),
                          apex_application.g_f38(i) ) <> apex_application.g_f33(i) then

       update mytable
       set col1 = apex_application.g_f34(i),
            col2 = decode( apex_application.g_f35(i),  0 , NULL, apex_application.g_f35(i)),
            col3 = apex_application.g_f37(i),
            col4  = apex_application.g_f38(i)
       where id = apex_application.g_f31(i);

       p_update_cnt := p_update_cnt +  1 ;
    end if;
  end loop;

  :P203_UPDATE_CNT := p_update_cnt;
end;

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
DECLARE
   p_delete_cnt number :=  0 ;
begin
  -- всегда пробегаются только выделенные checkboxes
  -- apex_application.g_f30(i) - номер выделенной строки / checkbox
  for i in  1  .. apex_application.g_f30.count loop

    -- все кроме новой добавленной строки
    if apex_application.g_f33( apex_application.g_f30(i) ) is not null then 
       
       -- удаляем
       delete from mytable
       where id = apex_application.g_f31( apex_application.g_f30(i) );

       p_delete_cnt := p_delete_cnt +  1 ;
    end if;
  end loop;
...
Рейтинг: 0 / 0
19.04.2011, 13:44
    #37222581
J.d
J.d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
спасибо ща попробую 5 сек!

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

Код: plaintext
1.
2.
3.
4.
5.
6.
FOR I in  1 ..APEX_APPLICATION.G_F01.COUNT LOOP

   insert into tda_test_table1 ( id, datacol, active )
   select i, APEX_APPLICATION.G_F01(i), to_number(APEX_APPLICATION.G_F01(i))
   from dual;

END LOOP;


как мне выдернуть тот ID который соответствует той записи которую я отметил чекбоксом??
п.с. вот в моем примере кстати значения null все
...
Рейтинг: 0 / 0
19.04.2011, 13:51
    #37222607
J.d
J.d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
у меня вот это вызывает подозрения -

onClick="if (this.checked) {apex.jQuery('#f01_0007').val('');} else {apex.jQuery('#f01_0007').val('');

это то что апекс автоматом прописывает в input checkbox.

нездоровая помоему вещь? может в настройках репорта косяк?
...
Рейтинг: 0 / 0
19.04.2011, 14:02
    #37222640
SvUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
Все это рекоммендуется комбинировать с apex_item, поскольку номера коллекций, как показало обновление 4.0,
могут поменяться в некоторых случаях... А это уже усложняет задачу...

в checkbox-е хранится номер строки в коллекции, поэтому обращаем внимание
Код: plaintext
1.
delete from mytable
where id = apex_application.g_f31( apex_application.g_f30(i) );

еще раз в checkbox-ах и в остальных коллекциях данные хранятся по разному. Если в первом случае только выбранные checkbox-ы, то в последнем случае все данные на странице... и номера там не совпадают.

Поэтому берешь коллекцию где у тебя ИД храниться и пишешь по аналогии apex_application.g_fxx( apex_application.g_f01(i) )
...
Рейтинг: 0 / 0
19.04.2011, 14:28
    #37222721
haXbat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
В более ранних версиях апекса (до 4й), где не было коллекций, подобный функционал реализовывал на чистом js: формировал строковую переменную с разделителями (10:23:33), содержащую все значения выделенных чекбоксов, аяксом передавал ее в application process и там в цикле раскручивал обратно.
...
Рейтинг: 0 / 0
19.04.2011, 14:41
    #37222765
SvUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
хм, видимо это было действительно давно, начинал с апекса 2.2 и там это уже всё было (применяю с 3.x правда).
А вот подобная привязка номеров коллекций к порядку столбцов убивает. Вроде бы натыкался раз на какой-то патч для 3.x, где эта проблема была решена, но ссылку больше не найду :(
...
Рейтинг: 0 / 0
19.04.2011, 15:07
    #37222844
J.d
J.d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
кажется я начинаю допирать систему нипель)) только я чето не уловил, почему у меня null возращает APEX_APPLICATION.G_F01(i)
...
Рейтинг: 0 / 0
19.04.2011, 15:10
    #37222853
haXbat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
SvUser,

Нет, это видимо я попутал на счет времени появления коллекций.
...
Рейтинг: 0 / 0
19.04.2011, 15:16
    #37222872
SvUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
1. должны быть выбраны какие-нибудь checkbox-ы, которые в f01 и строки уже сохранены в БД для надежности.
2. пересоздать табличную форму и отлаживать проблему...
...
Рейтинг: 0 / 0
20.04.2011, 07:15
    #37223792
J.d
J.d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
ну а вот это почему он вставляет?

onClick="if (this.checked) {apex.jQuery('#f01_0007').val('');} else {apex.jQuery('#f01_0007').val('');

событие при клике - если стоит галка значение элемента массива в null иначе тоже null.

да? зачем генерится такой код.
...
Рейтинг: 0 / 0
20.04.2011, 08:50
    #37223838
SvUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
Не заметил, видимо речь идёт не про row selector, а про пользовательский checkbox.
В пользовательском chekcbox-e необходимо самостоятельно указать какие значения там принимаются в List of Values
...
Рейтинг: 0 / 0
20.04.2011, 09:40
    #37223893
J.d
J.d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
вроде что-то проясняется. ну что я пишу тогда в LOV? сейчас оглашу результаты)
...
Рейтинг: 0 / 0
20.04.2011, 09:54
    #37223912
J.d
J.d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Simple Checkbox в Report-e
да, всё заработало.
спасибо)

поставил в свойствах столбца display as simple checkbox, в List of values написал #id# и
соответственно в процессе на обработку мне приходило в этой коллекции - множество отмеченных id-ников.

изврат, но главно что работает)
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Simple Checkbox в Report-e / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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