4D View Pro vous offre une nouvelle façon de charger vos données et de créer vos modèles : le contexte de données. Il vous permet de créer votre document avec des espaces réservés et de les remplir en définissant ce contexte de données.
Avec seulement quelques lignes de code, vous pouvez afficher des objets ou des collections sans les autoriser d’abord avec VP SET CUSTOM FUNCTION! Entrons dans les détails.
Créer un document avec des espaces réservés
Tout d’abord, vous devez créer un document avec les attributs de votre objet. Par exemple, si vous utilisez un objet avec 2 attributs, Firstname et Lastname, vous pouvez créer deux placeholders avec la commande VP SET BINDING PATH pour créer deux espaces réservés :
VP SET BINDING PATH(VP Cell("ViewProArea"; 0; 0); "Firstname")
VP SET BINDING PATH(VP Cell("ViewProArea"; 0; 1); "Lastname")
Aucune valeur n’apparaît dans votre feuille car le contexte de données n’est pas encore défini. Pour vérifier que vos cellules sont correctement liées, allez dans l’onglet DONNÉES de l’interface du ruban et cliquez sur le bouton Liaison de feuille. Le nom de vos attributs apparaîtra entre parenthèses :
Contexte des données
Maintenant que votre modèle est prêt, il suffit de définir votre contexte de données avec votre objet en utilisant VP SET DATA CONTEXT:
$object:=New object
$object.Firstname:="John"
$object.Lastname:="Smith"
VP SET DATA CONTEXT("ViewProArea"; $object)
Le modèle est donc mis à jour automatiquement :
Bien sûr, l’utilisateur peut modifier les données :
Dans ce cas, pas de problème, il suffit d’utiliser la méthode VP Get data context pour récupérer votre objet avec les modifications :
$object:=VP Get data context("ViewProArea")
//$object={Firstname:Judith,Lastname:Smith}
Injection de données dans les feuillesS
Si vous passez une collection à votre contexte de données, cette collection sera automatiquement liée à la feuille. Si l’option autoGenerateColumns de la commande VP SET DATA CONTEXT est définie à true, la collection est automatiquement affichée dans la feuille.
Par exemple, si vous voulez afficher une table de base de données, il suffit d’écrire :
$people:=ds.People.all().toCollection()
VP SET DATA CONTEXT("ViewProArea"; $people; New object("autoGenerateColumns"; True)
Vous obtenez :
Le nombre de colonnes et de lignes est calculé automatiquement, et les noms des colonnes sont les noms des champs de la table.
Notez que si autoGenerateColumns n’a pas la valeur true, aucune donnée n’est affichée !
Consultez l’IDH ci-dessus pour voir ces commandes en action. N’oubliez pas non plus de lire la documentation pour plus de détails !