Le proprietà del controllo

ControlBase
Ogni controllo utilizza la classe astratta ControlBase come punto di partenza per personalizzare proprietà e comportamenti.
In base al tipo di controllo alcune proprietà sono pertinenti e partecipano al caricamento, alla gestione e al salvataggio dei dati.
 
Il dato Json viene recuperato dal database attraverso il FormStore e processato da FormService per creare un'istanza Form con la collezione Controls di elementi ControlBase declinati nelle varie classi concrete (TextBox, Label, DropDownList e così via).
 
Ecco il ciclo di vita del form durante la fase di lettura dei dati:
 
Form read lifecycle
 
Ed ecco la fase di scrittura:
 
Form lifecycle write
 
Le proprietà di ControlBase
ControlBase mette a disposizione delle classi concrete una serie di proprietà mappate sui relativi campi Json. Vediamo quali sono.
 
Proprietà Descrizione
Name Il nome univoco del controllo nel form.
Type Il tipo di controllo.
Group Il gruppo del controllo per applicare eventi cumulativi come nascondere un intero set di controlli.
Title
Il titolo del controllo localizzato per le culture disponibili nell'istanza DataWeb. Almeno en-US è richiesta. 
DataField Il nome del campo nella base dati.
DataSubField
Se è impostato e il campo DataType è Structured, allora imposta il valore di questo controllo come nodo di una struttura Json e la salva in DataField.
DataType Il tipo di dato per validazione, formattazione, salvataggio e gestione nativa.
DataSourceMode
Permette di impostare la sorgente dati per i controlli che propongono un elenco di valori, come DropDownList o CheckBoxList. In caso di valore List i dati sono presi da una lista DataWeb; in caso di valore ControlClass i dati sono presi dal metodo implementato nella classe derivata GetListValuesAsync.
DataSource Il nome della sorgente dati. In caso di DataSourceMode List è il nome della lista DataWeb.
IsLateDataBinding Specifica se il recupero dei dati avviene al caricamento del form o solo all'esecuzione di un evento di un altro controllo. Si utilizza per creare caricare dati specifici in base al valore di un controllo precedente.
DefaultValueMode
Permette di impostare il valore predefinito. In caso di Value i dati sono presi da DefaultValue; in caso di valore ControlClass i dati sono presi dal metodo implementato nella classe derivata GetDefaultValueAsync.
DefaultValue
Indica in formato stringa il valore predefinito da applicare al controllo quando si crea un nuovo item.
IsVersionLinked Se attivo, al salvataggio il valore del controllo sarà replicato in tutte le versioni dell'item.
IsVisible
Specifica se il controllo è visibile o nascosto.
IsReadOnly
Specifica se il controllo è in sola lettura.
IsRequired
Specifica se il controllo è richiesto.
RegularExpression
Permette di impostare una RegEx di validazione del dato. Vale solo per DataType String.
MaxLength
Permette di impostare una lunghezza massima per il valore. Vale solo per DataType String.
StylePath
Indica uno stile dedicato per i controli di gestione Html.
FormName
Specifica il nome del form da utilizzare per i controlli con strutture Json nidificate.
ListControlNames
Specifica i valori in tabella per i controlli con strutture Json nidificate.
FileTagName
Specifica il tag per distinguere il file caricato nel repository dei documenti.
FileTypes
Specifica i tipi di file supportati dal controllo di upload file.
FileMaxSize
Specifica la dimensione massima in Byte del file caricato con il controllo di upload file.
FileMaxCount
Indica quanti file possono essere processati contemporanealmente dal controllo di upload file.
CustomControlComponent
Permette di specificare un componente Vue.js personalizzato per il controllo.
CustomControlOptions
Permette di specificare delle opzioni personalizzate per il controllo in formato Json.
ControlClass
Definisce la classe concreta del controllo. Se non viene specificata, viene automaticamente impostata quella di default di Type.
IsVisibleRoles
Imposta dei permessi di visualizzazione sul controllo in base ai ruoli dell'utente e al valore di 
VisibleRoles.
VisibleRoles
Contiene i ruolo abilitati alla visualizzazione del controllo.
Actions
Contiene le azioni impostate sul controllo come l'aggiornamento dei dati o la navigazione a un'altra sezione.
Events
Contiene gli eventi impostati sul controllo per cambiare il comportamento (DataSource, IsVisible, IsRequired) di altri controlli dipendenti
 
Gli hook di ControlBase
ControlBase mette a disposizione una serie di metodi personalizzabili che vengono eseguiti durante il ciclo di vita del controllo.
 
Hook Descrizione
GetDefaultValueAsync
Permette di impostare un comportamento personalizzato per il recupero del valore predefinito del controllo. 
ProcessOnGetValueAsync
Permette di impostare un comportamento personalizzato durante la fase di recupero del dato. Questo hook consente ad esempio di trasformare un valore prima che venga visualizzato.
GetListValuesAsync
Permette di impostare un set di dati personalizzato.
ValidateAsync
Permette di personalizzare la validazione del dato con ad esempio un controllo sulla base dati
ProcessOnSaveDataAsync
Permette di impostare un comportamento personalizzato durante la fase di salvataggio del dato. Questo hook consente ad esempio di processare un valore prima che venga salvato eventualmente coinvolgendo altri campi per aggiornamenti multipli.
IsUpdateDataAsync
Indica se il dato è aggiornabile o meno nel database. In caso negativo, il controllo non viene considerato durante la fase di salvataggio del dato.
SetCustomActionAsync
Permette di personalizzare il comportamento all'esecuzione di un'azione lato server sul controllo come l'invio di una notifica o l'esecuzione di un processo.
 
I metodi di supporto ControlBase
Questi metodi sono utilizzati nelle implementazioni predefinite degli hook e possono tornare utili nelle versioni personalizzate.
 
Metodo Descrizione
GetControlDefaultValue
Recupera il valore predefinito dal campo DefaultValue gestendone la conversione nel tipo nativo e la gestione del formato booleano.
ValidateControlIsRequired
Verifica che il valore sia presente in base al DataType del controllo
ValidateControlDataType
Valida il formato del dato inserito in modo che rispetti il DataType del controllo
SanitizeControlValue
Rimuove tutti i tag Html dal valore inserito
AddActionUpdateData
Aggiunge un'azione di aggiornamento dei dati del controllo
AddActionSetNavigation Aggiunge un'azione di navigazione a una sezione DataWeb
AddActionSetRemoteAction
Aggiunge un'azione di esecuzione di un'azione lato server
AddActionSetLocalAction
Aggiunge un'azione di esecuzione di un'azione lato client
AddEventSetIsVisible
Aggiunge un evento di visibilità per un controllo o per un gruppo di controlli
AddEventSetIsRequired
Aggiunge un evento di valore richiesto per un controllo o per un gruppo di controlli
AddEventSetDataSourceParameter
Aggiunge un evento di aggiornamento dati per un controllo o per un gruppo di controlli