Filtro Case-Insensitive en Permisos GAM (GeneXus)

Filtro Case-Insensitive en Permisos GAM (GeneXus)

📄 Filtro Case-Insensitive en Permisos GAM (GeneXus)

🔹 Contexto

En el Web Panel de administración de permisos (GAM), se requiere filtrar los permisos por nombre desde la grilla.

Por defecto, el método:

&GAMRole.GetPermissions(&RolePermissionFilter, &Errors)

utiliza:

&RolePermissionFilter.Name

Este filtro es case-sensitive, es decir:

  • “Del” encuentra “Delete” ✅

  • “del” NO encuentra “Delete” ❌


🔹 Problema

El filtrado por nombre utilizando:

&RolePermissionFilter.Name = "%" + &FilName.Trim() + "%"

depende del motor interno de GAM, el cual distingue mayúsculas/minúsculas, generando resultados inconsistentes para el usuario.


🔹 Solución implementada

1. Deshabilitar filtro por nombre en GAM

Se evita el uso del filtro case-sensitive asignando:

&RolePermissionFilter.Name = ""

De esta forma:

  • GAM devuelve todos los permisos según los demás filtros

  • Se delega el filtrado por nombre a la lógica de la aplicación


2. Aplicar filtro manual case-insensitive

Dentro del For, se implementa un filtro utilizando Upper() y like:

For &Permission in &Permissions

    if &FilName.IsEmpty() or
       Upper(&Permission.Name) like "%" + Upper(&FilName.Trim()) + "%"

        // carga de datos en la grilla
        Grid.Load()
        
    endif

EndFor

🔹 Funcionamiento

El filtro transforma ambos valores a mayúsculas:

Upper(&Permission.Name)
Upper(&FilName)

Esto permite comparar.

✔ Ejemplos

Input usuario Permiso Resultado
del Delete
DEL Delete
Del Delete

Deja un comentario 1

Your email address will not be published. Campos requeridos marcados *


Facundo Rullo

Facundo Rullo

Los filtros de GAM no funcionan como si fuese un atributo, hay que manejarlos desde la API del GAM, de esta manera.