2015-04-21 123 views
1

我有这个报告,每一列都是由APEX_ITEM包生成的。复选框在选中时启用/禁用其他项目

APEX_ITEM.CHECKBOX2, APEX_ITEM.DATE_POPUP2 

enter image description here

当复选框被选中,我想,以使该行的DATE_POPUP2。当复选框未选中时禁用它。

有没有办法做到这一点?

报告查询:

SELECT APEX_ITEM.CHECKBOX2(1,a.USR_CODIGO,DECODE(NVL((SELECT 1 
              FROM PROYECTOS_ROLES_USUARIOS pru 
              WHERE pru.USR_CODIGO = a.USR_CODIGO 
              AND pru.PRY_ID = :P92_PRY_ID),0),0,'UNCHECKED',1,'CHECKED')) as Incluir, 
a.USR_CODIGO as Usuario, APEX_ITEM.SELECT_LIST_FROM_QUERY(2, NVL((SELECT pru.ROL_CODIGO 
              FROM PROYECTOS_ROLES_USUARIOS pru 
              WHERE pru.USR_CODIGO = a.USR_CODIGO 
              AND pru.PRY_ID = :P92_PRY_ID),null), 'SELECT r.ROL_DESCRIPCION, r.ROL_CODIGO 
FROM ROLES r WHERE EXISTS (SELECT 1 FROM ROLES_USUARIOS ru 
     WHERE ru.ROL_CODIGO = r.ROL_CODIGO 
     AND ru.USR_CODIGO = ''' || a.USR_CODIGO || ''') and r.ROL_CODIGO not in(''MNI_RRHH'',''CAJ_COMPRAS'',''CAJ_VENTAS'',''CTA_CTE_CLIENTES'' 
     ,''CTA_CTE_PROVEEDORES'',''TCM_ALQUILERES'',''TCM_COMPRAS'') order by 1', null, 'YES', '%NULL%', '--') as Rol, 
     NVL((SELECT APEX_ITEM.DATE_POPUP2(3, prus.PRU_FECHA_INICIO, 'dd/mm/yyyy') 
       from PROYECTOS_ROLES_USUARIOS prus where prus.PRY_ID = :P92_PRY_ID and prus.USR_CODIGO = a.USR_CODIGO), 
        APEX_ITEM.DATE_POPUP2(3, TO_CHAR(SYSDATE, 'dd/mm/yyyy'), 'dd/mm/yyyy')) as Fecha_Inicio FROM USUARIOS a WHERE a.USR_FECHA_BAJA IS NULL AND exists (SELECT 1 
       FROM WWV_FLOW_FND_USER 
       WHERE USER_NAME = a.USR_CODIGO) order by 1; 
+0

您是否在每行上为DATE_POPUP2设置了一些不同的ID? – Typo

+1

1)提供使用的查询2)你对javascript的熟练程度如何?复制提供的代码后,你能维护它吗? 3)更好的是,apex.oracle.com上的工作区会很好。 – Tom

+0

1)添加查询。 2)我用Javascript不太好,但我想学习,这就是为什么我问。 – Benzil

回答

0

当汤姆暗示在他的评论中,有多种方法可以做到这一点使用JavaScript。您可以将CSS类应用到您的复选框和日期项目,然后使用一些jQuery执行操作。

在'页面加载时执行'部分中定义此页面首选项中的事件绑定可以做到这一点。

$('input.myCheckBox').click(function() { 
    var enabled = $(this).prop('checked'); 
    var myDate = $(this).closest('tr').find('input.myDate'); 
    myDate.prop('disabled', !enabled);  
    if(enabled) { 
     myDate.next('img').show(); 
    } else { 
     myDate.next('img').hide(); 
    }   
    }); 

使用此方法,您不需要将ID应用于元素。您也可以沿着动态行动路线走下去,也许会触发一个由动态行为解释的自定义事件?

相关问题