> Tech > Ajouter des attributs à  la classe de données

Ajouter des attributs à  la classe de données

Tech - Par iTPro - Publié le 19 septembre 2011
email

Nous avons Presque terminé. La figure 1 montre l’affichage des données à ce stade. Notez que le formulaire de données a déduit le contrôle utilisateur approprié pour les types Boolean et date. Toutefois, la clé primaire est modifiable, la propriété MoreInfo ne doit pas être visible par l’utilisateur et

les postes de facture ne sont pas visibles. Un moyen de résoudre ces problèmes consiste à créer une page personnalisée, mais ce type de correctif est susceptible d’être requis par tous les types d’entités, ce qui annule la valeur des outils automatisés.

Une autre approche consiste à ajouter des attributs à la classe de données. Cela fonctionne bien pour les personnalisations statiques, notamment le blocage de l’édition de clé primaire. Mais les attributs fournissent les mêmes informations statiques pour toutes les utilisations et ne sont pas profitables pour l’autorisation spécifique de l’utilisateur. La capture de l’événement AutoGeneratingField permet la personnalisation en réponse à l’environnement d’exécution, notamment l’annulation de la création de champs d’affichage. Si votre service de données est conçu pour fournir des informations du type autorisation, vous pouvez lui demander d’affiner l’affichage, dans le cas présent, de supprimer un champ :

Private Sub DataForm_AutoGeneratingField( _
ByVal sender As System.Object,
ByVal e As
DataFormAutoGeneratingFieldEventArgs)
If Not _bizService.CanReadProperty( _
e.PropertyName) Then
e.Cancel = True
Return
End If

L’interception de la génération de champs d’affichage permet d’autres personnalisations, comme les intitulés, les descriptions et les effets de style spécifiques. Vous pouvez aussi spécifier le type de contrôle à employer pour l’affichage, notamment le recours à un DataGrid pour afficher la liste des postes de facture :

If IsEnumerableNotString(e.
PropertyType) Then
Dim dg As New DataGrid()
dg.SetBinding(DataGrid.
ItemsSourceProperty, _
New Data.Binding(e.
PropertyName))
AddHandler
dg.AutoGeneratingColumn, _
AddressOf DataGrid_
AutoGeneratingColumn
e.Field.Content = dg
End If

Comme une chaîne est un élément dénombrable, la fonction IsEnumerableNotString reconnaît les propriétés IEnumerable qui ne sont pas des chaînes, afin d’isoler ce code peu élégant.

Une gestion similaire de l’événement AutoGeneratingColumn peut intercepter les colonnes DataGrid pour affiner l’affichage de la grille enfant. Le défi consiste à obtenir le service approprié pour l’enregistrement de détail, lequel est un service distinct de celui de l’enregistrement maître. Vous pouvez y parvenir avec un petit peu de réflexion, afin de récupérer le nom du type cible, suivi d’un appel à la fabrique qui a récupéré le service de l’enregistrement maître :

Dim targetTypeName = dg.ItemsSource. _
GetType.GetGenericArguments(0).Name
Dim service = _bizServiceFactory. _
GetItem(targetTypeName)

La figure 2 présente le formulaire de données après ces ajustements. Mais cela ne s’arrête pas là. Le DataForm fait partie de la prise en charge de RIA Services, et RIA Services s’appuie sur les métadon- fournies dans les attributs au niveau de la classe de données. Il est possible d’employer les attributs pour définir la validation, l’affichage, le mode lecture seule et d’autres informations :

Name:=»Name»)> _
Public Property CustomerName() As String

Un tableau étoffé d’attributs existe dans l’espace de noms System.ComponentModel. DataAnnotations.
Required, Range, StringLength et RegularExpressions prennent en charge la validation automatique. Name fournit le texte pour Label. Order définit l’ordre des champs d’affichage. Si une description est fournie, dans les attributs ou dans l’événement Auto- GeneratingField, une icône d’information apparaît. Dès que l’utilisateur passe dessus avec le pointeur de la souris, la description s’affiche.

Outre les effets de style, un certain nombre de propriétés sur le DataForm contrôlent les aspects de l’affichage, notamment l’emplacement de l’intitulé. Il est probable que la création automatique de tous les aspects de votre application ne soit pas appropriée au début, mais cela vous permet de booster votre activité de développement initiale et de mettre l’accent sur les personnalisations métier réellement profitables. Avec une stylisation appropriée, vos écrans personnalisés et automatisés apparaîtront comme un ensemble intégré procurant le meilleur des deux mondes, de sorte que vous pourrez vous concentrer sur les tâches qui requièrent réellement votre attention, tout en conservant une flexibilité maximum.

Téléchargez gratuitement cette ressource

*** SMART DSI *** VERSION NUMÉRIQUE

*** SMART DSI *** VERSION NUMÉRIQUE

Découvrez SMART DSI, la nouvelle revue du Décideur IT en version numérique. Analyses et dossiers experts pour les acteurs de la transformation numérique de l'entreprise, Gagnez en compétences et expertise IT Professionnelle avec le contenu éditorial premium de SMART DSI.

Tech - Par iTPro - Publié le 19 septembre 2011