Gestionnaires d’événements
La logique de script client s’exécute en tant que gestionnaires d’événements pour les événements de formulaire. Vous devez enregistrer vos gestionnaires d’événements afin que votre logique soit exécutée. L’enregistrement des événements communs peut être effectuée au moyen de la boîte de dialogue des propriétés de formulaire ou à partir de code. Certains événements peuvent être enregistrés uniquement à partir de code. Les gestionnaires d’événements peuvent s’exécuter sur plusieurs formulaires, mais doivent être enregistrés séparément sur chaque formulaire.
Enregistrer au moyen des propriétés de formulaire
L’enregistrement des gestionnaires d’événements à l’aide des propriétés de formulaire crée une configuration statique de gestionnaires d’événements lors de la conception. Chaque fois que le formulaire est chargé, les mêmes gestionnaires d’événements s’exécutent. Contrairement à l’enregistrement du gestionnaire d’événements avec du code, la logique peut déterminer ce qui doit être enregistré.
Dans le concepteur de formulaires, vous pouvez enregistrer des gestionnaires d’événements pour les événements suivants :
Formulaire : ce gestionnaire vous permet d’enregistrer les gestionnaires d’événements OnLoad et OnSave.
Onglets : ce gestionnaire vous permet d’enregistrer des événements pour chaque onglet sur le formulaire pour le changement d’état de l’onglet concerné. En général, cette option permet de savoir si un onglet est développé afin de pouvoir effectuer une action, par exemple charger dynamiquement des données.
Colonnes : ce gestionnaire vous permet d’enregistrer un gestionnaire d’événements si les données de colonne sont modifiées.
Voici un exemple d’enregistrement d’un gestionnaire d’événements OnLoad pour la table Compte :
Un modèle courant consiste à enregistrer un gestionnaire OnLoad, puis les gestionnaires d’événements restants au moyen de code dans la logique du gestionnaire d’événements OnLoad. L’avantage de cette approche est que vous n’avez pas besoin d’enregistrer tous les gestionnaires d’événements sur chaque formulaire lorsque vous avez besoin que votre logique s’exécute sur plusieurs formulaires. Un autre avantage est que vous pouvez décider d’enregistrer ou non un gestionnaire à l’aide de la logique si vous devez déterminer dynamiquement certains des gestionnaires d’événements. Par exemple, vous pouvez ignorer l’enregistrement d’un gestionnaire d’événements pour une colonne si vous pouvez déterminer le moment du chargement du formulaire et si cette colonne est en lecture seule ou masquée.
Enregistrer à l’aide de code
L’enregistrement des gestionnaires d’événements à l’aide de code est possible pour tous les gestionnaires, sauf OnLoad, qui doit être enregistré à l’aide de la configuration. Le gestionnaire OnLoad vous permet ensuite d’enregistrer d’autres gestionnaires dans du code. Voici un exemple d’enregistrement d’un gestionnaire OnChange dans la colonne de numéro de compte de la table Compte en procédant comme suit :
Créez une fonction qui s’exécute dans le gestionnaire OnLoad du formulaire de compte.
Dans cette fonction, appelez addOnChange pour enregistrer la fonction à appeler lorsque la colonne de numéro de compte change.
Enregistrez le gestionnaire d’événements OnLoad dans les propriétés du formulaire de compte.
function LearnLab_handleAccountOnLoad(executionContext)
{
var formContext = executionContext.getFormContext();
formContext.getAttribute('accountnumber').addOnChange(LearnLab_handleOnChangeAccountNumber)
}
function LearnLab_handleOnChangeAccountNumber(executionContext)
{
var formContext = executionContext.getFormContext();
formContext.ui.setFormNotification('Check other systems', 'INFO', 'AcctNumber');
}
Ce code affiche une notification au niveau du formulaire chaque fois que les données de la colonne de numéro de compte sont modifiées.
Vous pouvez enregistrer des gestionnaires pour de nombreux autres événements côté client.