对于每行都有一个带复选框的服务表报告,我试图获取所选服务的值,以便当我单击下一步时,可以使用新页面中选择的服务创建报告。 / p>
我已经尝试过这种方式:
服务表的报告。
select code,
name,
cost,
apex_item.hidden(p_idx => 1,
p_value => code) ||
apex_item.hidden(p_idx => 2,
p_value => cost) ||
apex_item.checkbox2(p_idx => 3,
p_value => code) CheckBox
from services
我创建了一个过程。
来源:
begin
apex_collection.CREATE_OR_TRUNCATE_COLLECTION ('SDBA_ORDER_ITEMS1');
for i in 1..apex_application.g_f01.count loop
apex_collection.add_member(
p_collection_name => 'SDBA_ORDER_ITEMS1',
p_c001 => to_number(apex_application.g_f01(i)), -- service_code
p_c002 => to_number(apex_application.g_f02(i)), -- cost
p_c003 => to_number(apex_application.g_f03(i)) -- service_code
);
end loop;
end;
服务器端条件:
begin
for i in 1..apex_application.g_f01.count loop
for j in 1..apex_application.g_f03.count loop
if apex_application.g_f01(i) = apex_application.g_f03(j) then
return true;
else
return false;
end if;
end loop;
end loop;
end;
Report on the next page.
select (select name from services where code = c001) as service_name,
c002 as cost
from apex_collections
where collection_name = 'SDBA_ORDER_ITEMS1'
order by 1
在下一页上报告。
select (select name from services where code = c001) as service_name,
c002 as cost
from apex_collections
where collection_name = 'SDBA_ORDER_ITEMS1'
order by 1
在此报告中,它显示表中的所有服务,而不是所选服务。
如何仅获取选定的行?有人可以帮我吗?
先谢谢了。
答案 0 :(得分:0)
复选框会形成密集的集合,不会像其他项类型那样稀疏。我认为这是网络技术的产品,而不是APEX。
因此,如果您有ID,名称和复选框
1 - ada - checked
2 - charles - not checked
3 - alan - checked
ID和Names数组中将有3个索引元素,而复选框数组中只有2个-索引元素3将为空。
因此,您需要通过按代码值编制索引来匹配复选框是否存在,并更像是检查存在性
apex_application.g_f03(apex_application.g_f01.code)
照顾潜在的no_data_found
答案 1 :(得分:0)
请注意,使用 APEX_ITEM.CHECKBOX 显示的复选框仅包含 APEX_APPLICATION 数组中被选中的那些行的值。与其他项(TEXT、TEXTAREA 和 DATE_POPUP)不同,这些项(TEXT、TEXTAREA 和 DATE_POPUP)可以为提交的每一行在相应的 APEX_APPLICATION 数组中包含一个条目,如果选中复选框,则该复选框仅在 APEX_APPLICATION 数组中包含一个条目。
我在 APEX_ITEM.CHECKBOX 上构建了引用 rownum 的报告。
报告代码:
SELECT APEX_ITEM.CHECKBOX(p_idx => 1, p_value => ROWNUM) checkb
,APEX_ITEM.HIDDEN(p_idx => 2, p_value => CUSTOMER_ID)||CUSTOMER_ID CUSTOMER_ID
,APEX_ITEM.HIDDEN(p_idx => 3, p_value => CUST_STATE)||CUST_STATE CUST_STATE
,CUST_FIRST_NAME ||' '||CUST_LAST_NAME
FROM DEMO_CUSTOMERS
然后根据选中的行,恢复隐藏项数组对应位置的值。
处理 PL/SQL 代码:
BEGIN
--
FOR i IN 1..APEX_APPLICATION.G_F01.COUNT LOOP
--
INSERT INTO ROMINA_TEST (LOG)
VALUES ('CUSTOMER_ID: '||APEX_APPLICATION.G_F02(APEX_APPLICATION.G_F01(i))||' - CUST_STATE: '||APEX_APPLICATION.G_F03(APEX_APPLICATION.G_F01(i)));
--
END LOOP;
--
END;
它有效! =)