Événements et Interactions
Système d'événements
Les événements connectent les interactions utilisateur dans le navigateur aux fonctions 4D côté serveur.
Flux
- L'utilisateur clique un bouton ou interagit avec un élément
- bweb.js envoie l'événement via WebSocket à 4D
- 4D cherche la configuration events sur le bloc
- Appelle la fonction : ds.{className}.{functionName}($vo_POST)
- La fonction retourne un WebFormController avec les instructions de réponse
- Le navigateur applique la réponse
Types d'événements
| Événement | Déclencheur |
|---|---|
| onClick | Clic sur un bouton |
| onSelectRows | Sélection d'une ligne dans une listbox |
| onChange | Changement de valeur d'un champ |
| onLoad | Chargement d'un bloc |
Boutons et onClick
Configuration d'un événement onClick dans les events du bloc :
{"onClick": [{"vt_ClassName": "MA_DATACLASS", "vt_FunctionName": "maFonction", "vo_Param": {"vt_BlocNameToSend": "UUID_WRAPPER_CHAMPS"}}]}
vo_Param.vt_BlocNameToSend : UUID du wrapper contenant les champs dont les valeurs doivent être envoyées à la fonction.
renderFunction (côté client)
Fonctions JavaScript exécutées côté navigateur, sans appel serveur :
| Fonction | Description |
|---|---|
| actionAccordingNumberLine | Active/désactive un bouton selon la sélection listbox |
| showBloc | Affiche un bloc |
| hideBloc | Masque un bloc |
| toggleBloc | Bascule la visibilité d'un bloc |
WebFormController (côté serveur)
Objet retourné par les fonctions 4D pour piloter la réponse :
| Méthode | Description |
|---|---|
| reloadBlock("nom") | Rafraîchit un bloc spécifique |
| sendAlert("success", "msg") | Affiche une notification toast |
| showBloc("nom") / hideBloc("nom") | Bascule la visibilité d'un bloc |
| redirect("/url") | Navigue vers une autre page |
| addNewEntity() | Prépare une nouvelle entité |
| save() | Sauvegarde l'entité en cours |
| removeEntity() | Supprime l'entité en cours |
SearchEffect et filtres
Système de recherche en temps réel intégré aux listbox. Le champ de recherche déclenche un événement qui filtre l'entity selection côté serveur.

