Unofficial Content
  • This documentation is valid for:

English version (not available yet)

Descripción

Las acciones son elementos de un Dynamic Form que buscan agregar comportamiento a las propiedades (DynProperty) que componen un form dinámico. Se especifican a nivel de cada propiedad por lo que cada una puede definir un conjunto de acciones diferentes. Los caso de uso que intentan resolver son por ejemplo el siguiente:

Dado una propiedad en donde se debe ingresar el código de cliente (CustomerID), sería deseable tener un prompt de clientes. Mediante la adición de una Action de type "prompt" podríamos solucionar el caso anterior. La idea es que dicha acción dibujará un link (o botón) al lado del CustomerId de tal manera de que cuando se abra el prompt y se seleccione un valor el mismo será retornado sobre el campo CustomerID.

Los tipos de acciones existentes están bajo el dominio DynActionsTypes. Algo importante a tener en cuenta es que las acciones pueden aplicar solamente a un modo determinado (Edit ó View) como se verá más adelante.

Ejemplo

DynProperty
{
 Id = "Name"
 Name = "Name"
 Type = DynBasicTypes.Character     
 Value = "John"
 Actions
 { 
  Action
  {
   Type = DynActionsTypes.NameLink
   Value = "http://www.gxtechnical.com" 
  }
  Action
  {
   Mode = DynModes.View 
   Type = DynActionsTypes.ValueLink
   Value = "http://www.genexus.com"
  }
  Action
  {
   Id = "customAction"
   Name = "Custom Action"
   Mode = DynModes.Edit
   Type = DynActionsTypes.Custom
   UIType = DynActionsUITypes.Link
  }      
 }
}

 

Estructura

  • Id: identificador único de la acción
  • Name: nombre de la acción. Contiene del link o botón a mostrar.
  • Mode: indica el modo en el cual debe mostrarse la acción. En caso de no ser especificado aplica a todos los modos.
  • Type: tipo de acción dado por el dominio DynActionTypes
  • UIType: indica el control que debe mostrarse para representar la acción. Está dado por el dominio DynActionsUITypes y puede tomar los valores Link o Button.
  • Value: valor de la cción
  • Metadata: metadata de la acción.

Tipo de acciones

Actualmente existen conjunto de acciones predefinidas pero el esquema de acciones es totalmente extensible por lo que se pueden ir agregando más acciones en el futuro. Los siguientes tipos de acciones se encuentra todos en el dominio DynActionTypes.

  • NameLink
    Agrega un determinado link al Name de una propiedad.
     
Action
  {
   Type = DynActionsTypes.NameLink
   Value = "http://www.gxtechnical.com" 
  }
  • ValueLink
    Agrega un determinado link al Value de una propiedad.
     
Action
  {
   Type = DynActionsTypes.ValueLink
   Value = "http://www.genexus.com" 
  }
  • Save
    Dibuja un link o botón que al presionarlo retornará el valor de una propiedad al server. Para capturar el evento en el server deberá programarse lo siguiente:
Event dynamicForm1.OnSave

   &xml = &dynForm.DynProperty.ToXml()
   // do something...
EndEvent     
Action
  {
   Id = "customAction"
   Name = "Custom Action"
   Mode = DynModes.Edit
   Type = DynActionsTypes.Custom
   UIType = DynActionsUITypes.Link
  }   
  •  Custom
    Sirve para definir acciones propias que serán identificadas a través del Id de la acción. Las acciones serán capturadas luego en el evento "OnAction" del Dynamic Form. Un ejemplo completo sería el siguiente:
Action
  {
   Id = "action1"
   Name = "Custom Action"

   Type = DynActionsTypes.Custom
   UIType = DynActionsUITypes.Link
  }     

 

 

Event dynamicForm1.OnAction
   if dynamicForm1.CurrentActionType = "action1"
      // do something...
   Endif

EndEvent    
  • Prompt
    La acción de prompt invocará a un cierto objeto GX que retornará un conjunto de valores. Con un ej. se explica su implementación:
DynProperty
{
	Id = "myprop"
	Name = "Property X"
	Type = DynBasicTypes.Character
	Actions
	{
		Action
		{
			Id = "Prompt"
			Type = DynActionsTypes.Prompt
			Value = "GxObject" //obligatorio: debe indicarse el nombre del objeto genexus que se desea invocar

			Metadata
			{
	
				MetadataItem 
				{
					Id = "image" 		//opcional: permite especificar la imagen asociada al prompt
					value = MyImage.Link() 	//se debe especificar un link a la imagen
				}
				MetadataItem 
				{
					Id = DynPromptParmType.In 	//opcional: identifica un parámetro de entrada solamente que se obtiene del formulario
					value = "myprop" 		//id del DynProperty de donde se desea obtener el valor
				}
				MetadataItem 
				{
					Id = DynPromptParmType.InConstant 	//opcional: identifica un parámetro de entrada con un valor constante
					value = "una constante"			//el valor constante debe estar en formato string
				}						
				MetadataItem 
				{
					Id = DynPromptParmType.InOut	//opcional: identifica un parámetro de entrada-salida que se obtiene del formulario
					value = "myprop"		//id del DynProperty de donde se desea obtener el valor y donde se retornará el resultado
				}											
				MetadataItem 
				{
					Id = DynPromptParmType.Out	//opcional: identifica un parámetro de salida solamente del formulario
					value = "myprop"		//id del DynProperty donde se retornará el resultado
				}
				MetadataItem 
				{
					Id = DynPromptParmType.OutNull //opcional: identifica un parámetro de salida nulo
					value = ""	//no es necesario identificar nada más; cualquier valor que retorne el prompt simplemente será desestimado.
				}						
			}					
		}
	}							
}

Notas:

  1. Los parámetros se evalúan en el orden que se definen. Es decir si el prompt posee 2 parámetro X y Z, los mismos deben ser identificados en ese orden.
  2. Si no se especifica parámetro alguno se entiende que el prompt posee sólo un parámetro de salida (Out) y que el valor devuelto se copia en la misma propiedad donde se definió el prompt.
  3. El objeto a invocar como prompt no debe encriptar parámetros. Es una limitación temporal.

Modo de acciones

Las acciones pueden especificar un modo (atributo Mode) lo cual significa que la acción solo aplicará cuando el formulario se encuentre en el modo especificado. En caso de no especificar modo alguno, la acción aplicará a todos los modos.

 

 


Nota: actualmente los tipos de acciones implementados son NameLink, ValueLink, Save, Custom y Prompt.


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