===== Relaciones entre Colecciones ===== \\ aaaa En XOne hay tres tipos de relaciones entre colecciones: \\ ^ TIPO DE RELACIÓN ^ REPRESENTACIÓN VISUAL ^ DESCRIPCIÓN ^ | Relación de 1 a 1 (Lupa) | {{wiki:control_linked.png}} | Utilizado en relaciones con colecciones que tienen muchos datos.| | Relación de 1 a 1 (Combo) | {{wiki:control_combo.png}} |Utilizado en relaciones con colecciones que tienen pocos datos.| | Relación de 1 a Varios (Contents) | {{wiki:control_content.png}} |Utilizado cuando no sabemos el número de registros que podemos asociar. Un ejemplo típico de contents son los Pedidos y sus detalles. | ===== Relación 1 a 1: Lupa ===== \\ Este tipo de relación se utiliza para seleccionar un único valor de otra colección.\\ \\ Únicamente se grabará en Base de Datos el ID de la fila seleccionada, pudiendo rescatar además, simplemente para mostrar en pantalla, otros campos de la fila seleccionada.\\ \\ \\ ^ Vista campo de enlace de tipo Lupa en Pocket PC ^ | {{wiki:relaciones-colecciones:vista-lupa-pda.png}} | ^ Vista campo de enlace de tipo Lupa en BlackBerry ^ | {{wiki:relaciones-colecciones:vista-lupa-bb.png}} | Cliente Contacto ===== Relación 1 a 1: Combo ===== \\ Similar al anterior, pero se utiliza únicamente cuando la colección llamada tiene pocos datos. \\ \\ Esto es importante, porque cuando se va a pintar la ventana de edición, y uno de los campos tiene un combo, cargará en memoria todos los valores que puede contener dicho combo, con lo que si son muchos datos a cargar en el momento de abrir dicha ventana de edición, puede demorarse bastante.\\ \\ \\ ^ Vista campo de enlace de tipo Lupa en Pocket PC ^ | {{wiki:relaciones-colecciones:vista-combo-pda.png}} | ^ Vista campo de enlace de tipo Lupa en BlackBerry ^ | {{wiki:relaciones-colecciones:vista-combo-bb.png}} | === Ejemplo de Código === Tipo La diferencia con el tipo lupa es simplemente el atributo **showinline="true"** y además el hecho de que el combo se carga de valores cuando se entra en la colección a diferencia de la lupa.\\ ===== Relación 1 a 1: Combo pero SIN BASE DE DATOS AUXILIAR ===== \\ La estructura es similar a los anteriores, pero se utiliza exclusivamente cuando la colección llamada tiene pocos datos y claramente definidos. \\ NO se tira contra una Tabla en Base de Datos, los valores se definen en un primer PROP y se rescatan en otro PROP. === Ejemplo de Código === ===== Relación 1 a N: Contents ===== \\ Una colección de contenido (contents) es un grupo de datos que dependen de una cabecera, es decir, una colección que depende de otra. \\ \\ Se utiliza cuando no sabemos el número de registros que vamos a poder asociar en la colección cabecera.\\ \\ Ejemplos típicos de contents son los pedidos y sus líneas de detalle o artículos y sus existencias en almacén.\\ \\ \\ {{wiki:relaciones-colecciones:vista-contents-pda.png}} \\ ^ Campo de enlace entre la cabecera\\ y la colección de detalles(contents) ^ | {{wiki:relaciones-colecciones:relacion-contents.png}} | \\ Para definir colección con content es necesario seguir varios pasos:\\ \\ ===== Pasos para crear un content ===== ==== Paso 1 ==== \\ Se debe definir la colección principal (p.e colección de documentos). Cada una de las propiedades que se definen en esta colección corresponde a la cabecera del objeto.\\ \\ Se define la colección content.\\ \\ En el ejemplo que estamos utilizando, se creará una colección de detalles de documento. Cada una de las propiedades que se definan en la colección, corresponderán a las líneas de detalle del documento. \\ Se incluye una definición de content en la colección principal. La definición de content tiene el siguiente formato:\\ **prop** * **name:** Le asigna un nombre a la propiedad. Se suele poner una "@" delante para indicar que es una propiedad que hace referencia a un content. Recomendamos su uso para distinguir y localizar con mayor facilidad dentro del mappings. * **group:** Grupo o pestaña donde aparecerá el content. * **type:** Tipo de propiedad. Para referirse a content ha de ser "Z". * **contents:** Nombre del content. Este atributo hace una llamada al nodo contents que tenga su mismo nombre. Es decir, el atributo contents ha de ser igual que el name del nodo contents. * **width:** Define el ancho del content. * **height:** Define la altura del content. En Android, es posible modificar este atributo por script. Supongamos que por ejemplo necesitas un cuadro de búsqueda que está oculto y que lo activas con un botón, y quieres que todo ocupe siempre el 100% de la pantalla. Entonces, lo que harías sería lo siguiente: