GrialTree

De GrialWIKI


Link=

Controles con sufijo: _gte

Contenido

Descripción General

El GrialTree permite componer en forma de arbol hasta 6 queries diferentes con relacioin padre-hijo interna o entre las tablas

Es posible componer un tree con un único query, por ejemplo de una tabla jerárquica (tipo ARB, com campo RELA_PADRE)


Auto Load Node data

Los queries se dividen en 2 grupos de tres queries cada uno. El primer grupo de 3 queries es el que se ejecuta en la carga del control (GrialCont.LoadData). El segundo grupo se ejecuta únicamente cuando el usuario llega a un nodo nodo final (hoja), cargando el resto de los nodos debajo de esa hoja.

Cada grupo tiene tres queries, para permitir utilizar varias tablas con relación jerárquica entre ellas. Los queries se denominan "pre", "central" y "post", y se ejecutan en secuencia, adicionando nodos al tree de acuerdo a las relaciones padre-hijo determinadas por la configuración de los campos ID_TREE y RELA_PADRE

Para permitir la integración de tablas de diferentes orígenes es necesario utilizar alias en los queries, para que el campo ID_TREE exista en todos los queries y tenga valor único para todo el tree.

Técnicas

En caso de utilizar varias tablas, para que el campo ID_TREE tenga valor único es posible utilizar los ID's de cada tabla, agregando una letra (que identifique la tabla), por ejemplo:

  ID_SOCUSUA05||'F' as ID_TREE


RootCmdParams y BranchCmdParams

Estas propiedades permiten incorporar un valor de ID o un filtro a uno o varios queries de cada grupo.


En los queries del primer grupo (root) todas las existencias de la palabra ':Params: (dos puntos, Params, dos puntos) será reemplazada por el contenido de la propiedad RootCmdParams


En los queries del segundo grupo (branch) todas las existencias de la palabra ':Params: (dos puntos, Params, dos puntos) será reemplazada por el contenido de la propiedad BranchCmdParams


Para el caso del segundo grupo, también se dispone de todos los campos del nodo-hoja, en el cual se posiciona el usuario y que causa la carga da datos (AutoLoadNodeData).

Por ejemplo, considerando un sistema patrimonial, donde si el ultimo nodo del primer grupo contiene un campo ID_BIEPATR05 que representa la especificación del bien, y los nodos por debajo de este nodo son aquellos que dependen del valor de este campo, por ejemplo, las unidades de ese bien que se encuentran inventariadas, el query para el grupo Branch debiera ser

  Select ID_BIEPATR06||'FC' as ID_TREE, BIEPATR06_EXISTENCIAS, BIEPATR06_NRO_SERIE, BIEPATR06_DESCRI
  from bie_patr_06 where rela_biepatr05 = [:ID_BIEPATR05:]

En este query, el valor para [:ID_BIEPATR05:] es tomado del nodo en el cual el usuario se ha posicionado, por lo que cargará un set de datos distintos para cada uno de los nodos finales del árbol inicial de carga.

Hooks adicionales para el modo AutoLoadNodeData

Para que funcione la carga secundaria parcial, es necesario incorporar una llamada en el evento NodeClick del TreeView, para que en caso de ser necesario, se ejecuten los queries del grupo "Branch" y se carguen los nodos dependientes.

Ejemplo:

Private Sub TreeView_NodeClick(node as Node)
   GrialCont.AutoLoadTreeData node,BiePatr_gte 
End Sub

Como se requiere la carga de datos, es un método del GrialCont el que debe ser invocado, el primer parametro es el nodo actual (del cual tomar datos para filtrar la carga) y el segundo parámetro es el control _gte que le da contenido al TreeView que el usuario está navegando.

Propiedad FastSearchVisible

El GrialTreeController tiene dos modos de funcionamiento. Cuando FastSearchVisible es false, el control es invisible, y permite darle contenido y controlar el TreeView relacioando.

Cuando FastSearchVisible es true, el control se muestra como un campo de texto que permite realizar un fast-search (búsqueda mientras el usuario tipea), y adicionalmente un boón de "refresh" que permite que el usuario dispare una recarga del control.

Propiedades

NodeRootCaption;Determina el texto para el nodo "root" del cual dependen todos los otros nodos.



Herramientas personales