Un árbol se basa en una consulta SQL y devuelve los datos representados en una jerarquía. El formato de la consulta que debemos respetar es el siguiente: SELECT status, level, name, icon, id, tooltip, link FROM ... WHERE ... START WITH... CONNECT BY PRIOR id = pid ORDER SIBLINGS BY ... Utilizaremos la cláusula start with .. connect by para generar la consulta jerárquica para el árbol. La columna status es utilizada para la lógica del Árbol y no debe ser modificada. Veamos el siguiente ejemplo de consulta SQL: SELECT case WHEN connect_by_isleaf = 1 THEN 0 WHEN level = 1 THEN 1 ELSE -1 END as status, level, ename as title, 'icon-tree-folder' as icon, empno as value, ename as tooltip, NULL as link FROM emp START WITH mgr IS NULL CONNECT BY PRIOR empno = mgr ORDER SIBLINGS BY ename De forma predeterminada, se creará un árbol de APEX, usando la clase CSS ‘icon-tree-folder’ para representar la imagen en el árbol. Si estamos creando un jsTree (Legacy) tree, una imagen de referencia se debe utilizar en lugar de la clase CSS que se muestra en el ejemplo anterior, deberíamos reemplazar ‘icon-tree-folder’ con '#IMAGE_PREFIX#go-small.png' . START WITH se utilizará para especificar la raíz de la consulta jerárquica; y su valor se puede basar en un elemento existente, un valor estático o en una consulta SQL que devuelva un valor único. Tenemos diferentes formas de iniciar el Árbol: 1) Iniciar Árbol según Elemento Existente: P1_ID select ENAME as id, EMPNO as value from EMP start with MGR = :P1_ID connect by prior EMPNO = MGR 2) Iniciar Árbol según Consulta SQL: select empno from emp where ename = 'KING' select ENAME as id, EMPNO as value from EMP start with MGR = (select empno from emp where ename = 'KING') connect by prior EMPNO = MGR 3) Iniciar Árbol según Valor Estático: 'KING' select ENAME as id, EMPNO as value from EMP start with ENAME = 'KING' connect by prior EMPNO = MGR 4) El valor de Iniciar Árbol es NULL select ENAME as id, EMPNO as value from EMP start with MGR is null connect by prior EMPNO = MGR En nuestro ejemplo estamos usando NULL Ingresamos la Consulta SQL en el Origen Guardamos y ejecutamos la página: Si creamos el tree a partir del asistente nos crea dos botones “Reducir Todo” (para contraer todos los nodos del árbol) y “Ampliar Todo” (para expandir todos los nodos del árbol), el cual cada uno de los botones tiene una Acción Dinámica cuya acción Verdadera será, para el botón Contraer Todo : “Reducir Arbol” y para el botón Ampliar Todo será: “Ampliar Arbol”. Nosotros podemos crear cada uno de los botones en forma manual. De esta forma podemos contraer y expandir el árbol usando los botones. Lo importante para trabajar con los arboles es respetar la estructura de la Consulta SQL para que se muestren los datos en forma jerárquica.
↧