Unofficial Content
  • This documentation is valid for:

English version (not available yet)

Descripción

El control autocomplete (o suggest) del Dynamic Form Control permite seleccionar valores que se leen dinamicamente de una fuentes externa (comunmente una base de datos). Es exactamente igual al conocido suggest built-in GeneXus.

Ejemplo

Para crear un control Autocomplete se debe especificar una DynProperty como la siguiente:

 

DynProperty
{
Id = "US_States"
   Name = "US_States"
   Type = DynBasicTypes.Character     
   UITypeEditor = DynUITypes.AutoComplete Value = "CA"
   Metadata
   {
    MetadataItem
      {
       Id = "ds" 
        Value = GetStates.link("X")                                     }
      MetadataItem  
      {
       Id = "minQueryLength"                                
         Value = '1'
      }
      MetadataItem 
      {
       Id = "forceSelection"                                         Value = 'false'
      } MetadataItem   // opcional
      {
       Id = "maxResultsDisplayed" 
         Value = '1'
      } MetadataItem   // opcional
      {
       Id = "defaultValueDescription" 
         Value = 'California'
      } MetadataItem  
      {
       Id = "queryField" 
         Value = 'Name'
      }    } }   

Metadatas

  • DS: la url de un procedimiento genexus main Http que deberá devolver los resultados a mostrar (ver más adelante un ejemplo).
  • MinQueryLength: cantidad de letrás mínima a tipear antes de que se despliegue el suggest. Valor default : 2
  • ForceSelection: En true, obliga a que se seleccione sí o sí un valor de la lista de elementos "sugeridos". False permite ingresar elementos nuevos (que no están en la lista). El valor default es true.
  • MaxResultsDisplayed: es la cantidad de items a mostrar. El default es 30.
  • DefaultValueDescription: es la descripción del default value. En caso de no existir se pone directamente el value.
  • QueryField: se utiliza para solicitar que se envíen valores de ciertos campos del formulario. Es útil para hacer un autocomplete Ciudad/Pais.

Ejemplo

Procedimiento GetStates (main, con call protocall http).

Tiene una regla parm donde se recibe la variable &query con lo ingresado en el control hasta el momento.

&dynPropertyCollection.Clear()
for each
where Name like &query.Trim() + '%'
  defined by StateName 
  &dynProperty = new()
  &dynProperty.Id = StateId.Trim()
  &dynProperty.Value = StateName.Trim()
  &dynPropertyCollection.Add(&dynProperty)  
endfor &httpResponse.AddString(&dynPropertyCollection.ToJson())

&dynProperty es de tipo DynProperty
&dynPropertyCollection es una colección de DynProperty.

Cuando se utilizan N metadatas queryField, se deberá agregar N parámetros a la parm para recibir esos valores. Se puede decir que la regla parm tendrá entonces la siguiente forma:

parm( x1, x2...xN, y1, y1...yN, &query) tal que:

xi: son los valores "hardcoded" que se enviaron a través de la metadata "DS" (ver ejemplo)
yi: son los valores de los campos que se "solicitaron" a través de la metadata "queryField"
&query: es lo ingresado hasta el momento en el campo autoComplete. Este parámetro siempre será el último que se recibe.

Notar que la final se debe retornar la colección a través de un httpResponse en formato Json.
Nota: Se tiene un ID y un value. El ID oficia en este caso de Hide Code, es decir, el valor del elemente seleccionado será el ID y no el value.


 

Last update: April 2024 | © GeneXus. All rights reserved. GeneXus Powered by Globant