DataBinding avancé Mitsuru FURUTA, relations techniques développeurs...
-
Upload
sebastien-martinez -
Category
Documents
-
view
109 -
download
1
Transcript of DataBinding avancé Mitsuru FURUTA, relations techniques développeurs...
![Page 1: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/1.jpg)
DataBinding avancé
Mitsuru FURUTA, relations techniques développeursmailto:[email protected] – http://blogs.microsoft.fr/mitsufu
Pierre LAGARDE, relations techniques développeurs
mailto:[email protected] - http://blogs.developpeur.org/fox
Présentation technique, Paris, 28 septembre 2005
![Page 2: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/2.jpg)
Agenda
Introduction
Les sources de données
Le modèle ASP.NET (v1 et v2)
Le modèle WinForms
Conclusion
![Page 3: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/3.jpg)
Introduction
Pourquoi cette technologie ?Architecture en couches
Contrôles génériques
Liaison bidirectionnelle
Contrôleur de type MVC
Contrat nécessaire entre les contrôles et les sources de données
Les sources de donnéesImplémentation d’interfaces communes définissant le modèle
Les éléments simples et les collectionsTypeDescriptor, notion de vue
Les contrôlesConnexions aux vues et aux interfaces de binding
![Page 4: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/4.jpg)
Démo 1: Helloworld…
…ou presque
![Page 5: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/5.jpg)
Introduction
Ca marche tout seulBinding sur objets
Binding sur collections
Binding en mode design
Binding == Reflection ?
![Page 6: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/6.jpg)
Les sources de données
Mise en évidence des TypeDescriptorsInterception d’un changement de valeur
Personnalisation de la vue d’un objetAjout d’une propriété
Champ calculé
Objet clone
Les collectionsFonctionnement de base: array, generics
Personnalisation de la vue depuis la collection (ITypedList)
OnCalc
Objets « relais »: DataView, BindingSource, ObjectDataSourceL’interface IBindingList
Ajout d’un élément virtuel
Le cas du DataSet
![Page 7: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/7.jpg)
Les sources de données, les TypeDescriptors
Du Type au TypeDescriptorTypeDescriptor.GetProperties(type)
Rôle des PropertyDescriptors:Définit la vue d’une propriété (nom, type, etc)
Fournit un accès à la valeur de chaque propriété lecture et en écriture
Possibilité de se brancher aux évènements (Changed)
![Page 8: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/8.jpg)
TypeDescriptor
CustomerCustomer
•Id•Name•CompanyName•IsPartner
•Id•Name•CompanyName•IsPartner
TypeDescriptorTypeDescriptor
•Id•Name•CompanyName•IsPartner
•Id•Name•CompanyName•IsPartner
DataBindingDataBinding
ReflectionReflection
![Page 9: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/9.jpg)
Démo 2: mise en évidence du TypeDescriptor
![Page 10: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/10.jpg)
Les sources de données, personnalisation de la vue d’un objet
L’interface ICustomTypeDescriptorGetProperties() permet la réécriture de la vue d’un objet propriété par propriété. (via les PropertyDescriptors)
Différence entre TypeDescriptor.GetProperties(object) et TypeDescriptor.GetProperties(type)
TypeDescriptor.GetProperties(object) renvoie les PropertyDescriptors éventuellement réécrites par ICustomTypeDescriptor
TypeDescriptor.GetProperties(type) renvoie les PropertyDescriptors du type de base sans tenir compte d’une éventuelle implémentation d’ICustomTypeDescriptor
![Page 11: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/11.jpg)
ICustomTypeDescriptor
OrderOrder
•OrderId•Amount•OrderId•Amount
ICustomTypeDescriptorICustomTypeDescriptor
•OrderId•Amount•OrderId•Amount
DataBindingDataBinding
ReflectionReflection
•Fake•Fake
![Page 12: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/12.jpg)
Les sources de données, ICustomTypeDescriptor
![Page 13: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/13.jpg)
Les sources de données, ICustomTypeDescriptor
![Page 14: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/14.jpg)
Démo 3: ajout d’une propriété virtuelle
![Page 15: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/15.jpg)
Les sources de données, « la guerre des clones »
Création d’un objet à la vue entièrement paramétrableRéécriture complète de l’ensemble des PropertyDescriptors
Mise en place d’une collection de définitions de propriétés
![Page 16: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/16.jpg)
ICustomTypeDescriptor
CustomTypeObjectCustomTypeObject
•Properties[]•Properties[]
ICustomTypeDescriptorICustomTypeDescriptor
DataBindingDataBinding
ReflectionReflection
•Name•Text•Anything
•Name•Text•Anything
•Name•Text•Anything
•Name•Text•Anything
![Page 17: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/17.jpg)
Démo 3 bis: vue dynamique
![Page 18: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/18.jpg)
Les sources de données, les collections
Modifier la vue d’un objet depuis une collectionPermet d’être indépendant de la définition de l’objet
Permet de faire des modifications propre à la présentation
L’interface ITypedListGetItemProperties(): redéfinit la vue des éléments de la collection
Attention aux listes hétérogènes !Le type des éléments n’est testé qu’une seule fois (TypeDescriptors uniques !)
![Page 19: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/19.jpg)
Les sources de données, ITypedList
Collections: ArrayList, générics, …
Collections: ArrayList, générics, …
•Id•Name•CompanyName•IsPartner
•Id•Name•CompanyName•IsPartner
ITypedListITypedList
•Id•Name•CompanyName•IsPartner
•Id•Name•CompanyName•IsPartner
DataBindingDataBinding
ReflectionReflection
•Fake•Fake
Items[]Items[]
![Page 20: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/20.jpg)
Les sources de données, ITypedList
![Page 21: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/21.jpg)
Demo 4: ajout d’une propriété virtuelle à une collection
![Page 22: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/22.jpg)
Demo 5: ajout d’un item virtuel à la vue
![Page 23: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/23.jpg)
Les sources de données
Pourquoi IListSource ?Palier au manque de délégation d’implémentation d’interface
![Page 24: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/24.jpg)
Les sources de données
Le cas du DataSet
![Page 25: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/25.jpg)
Le modèle WinForms
La classe System.Windows.Form, support du moteur de Binding
Les managersPropertyManager
CurrencyManager
L’objet BindingContext
![Page 26: DataBinding avancé Mitsuru FURUTA, relations techniques développeurs mailto:mitsufu@microsoft.commailto:mitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader036.fdocuments.fr/reader036/viewer/2022062622/551d9dc3497959293b8e1a87/html5/thumbnails/26.jpg)
Le modèle ASP.NET