17 abril, 2024

LISTAS DESPLEGABLES DEPENDIENTES EN POWER APPS

Hola a todos,

Hoy voy con un tema muy recurrente en Power Apps, se trata de las listas desplegables dependientes.

Siempre que construyamos un formulario en el que el usuario tiene que seleccionar información de varias listas desplegables hay que plantearse si es necesario que sean dependientes o no. Todo dependerá de lo que queremos mostrar con la herramienta (y lo que nos pida el usuario).

Para montar el ejemplo utilizaré la base de datos que suelo mostrar para los ejemplos, esta información la he subido a una lista de SharePoint:

Y ahora vamos a crear en Power Apps una herramienta que nos permita seleccionar a las personas utilizando listas desplegables y que sean dependientes, es decir que el filtro de una lista dependa del contenido del filtro aplicado anteriormente.

Esta sería la herramienta:

Ha incluido una galería para que podáis ver cómo se van filtrando los resultados. Por otra parte, he incluido un espacio en blanco en cada lista desplegable para permita que si está en blanco se muestren todos los resultados en la galería.

Vamos con la lista inicial (SECCION), aquí utilizaremos el siguiente código, el más simple:

En propiedad Items incluiremos la siguiente función:

Ungroup(
    Table(
        {MTabla: Table({Valores: Blank()})};
        {
            MTabla: ForAll(
                Distinct(
                    PERSONAS;
                    SECCION
                );
                {Result: ThisRecord.Value}
            )
        }
    );
    "MTabla"
)

Lo único que estamos haciendo es mostrar registros únicos del campo Sección con la función Distinct y añadir un espacio en blanco al inicio con las funciones Ungroup y Table.

Y ahora vamos con la segunda lista (Estudios):

Ungroup(
    Table(
        {MTabla: Table({Valores: Blank()})};
        {
            MTabla: ForAll(
                Distinct(
                    Filter(
                        PERSONAS;
                        SECCION = ddSeccion.SelectedText.Value
                    );
                    ESTUDIOS
                );
                {Result: ThisRecord.Value}
            )
        }
    );
    "MTabla"
)

Ahora complicamos un poco más el código añadiendo un filtro e incorporando una condición (que el campo sección sea igual a dato seleccionado en la lista desplegable), y mostramos los ESTUDIOS.

En la tercera lista incluiremos el siguiente código:

ngroup(
    Table(
        {MTabla: Table({Valores: Blank()})};
        {
            MTabla: ForAll(
                Distinct(
                    Filter(
                        PERSONAS;
                        SECCION =ddSeccion.SelectedText.Value And ESTUDIOS = ddEstudios.SelectedText.Value
                    );
                    IDIOMA
                );
                {Result: ThisRecord.Value}
            )
        }
    );
    "MTabla"
)

Al igual que el código anterior añadimos una nueva condición, los ESTUDIOS y mostramos el IDIOMA.

Y por último, este es el código que debe incluir la galería para que funcione correctamente (en la propiedad Items):

Filter(
    PERSONAS;
    IsBlank(ddSeccion.Selected.Result) Or SECCION = ddSeccion.SelectedText.Value;
    IsBlank(ddEstudios.Selected.Result) Or ESTUDIOS = ddEstudios.SelectedText.Value;
    IsBlank(ddIdioma.Selected.Result) Or IDIOMA = ddIdioma.SelectedText.Value
)

El motivo de incluir el registro en blanco al inicio de cada lista es para que cuando la galería detecte un lista en blanco muestre todos los resultados.

Y este es el resultado de la selección:

Y esto es todo, y sé que os será de utilidad.

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies