Binding d'un objet ou collections d'objets (ASP.NET / C#)

Résolu
CToph Messages postés 2 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 2 avril 2008 - 1 avril 2008 à 15:46
CToph Messages postés 2 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 2 avril 2008 - 2 avril 2008 à 14:56
Bonjour,
   Je cherche un moyen de réaliser une liaison d<?xml:namespace prefix st1 ns "urn:schemas-microsoft-com:office:smarttags" /??><st1:personname w:st="on">'</st1:personname>objet (collection ou objet unique) en ASP.NET / C# aussi simplement qu<st1:personname w:st="on">'</st1:personname>il est possible de le faire en Windows Forms. 
Le binding bidirectionnel en WinForm sur un objet métier ou une collection d<st1:personname w:st="on">'</st1:personname>objets est simple d<st1:personname w:st="on">'</st1:personname>utilisation et ne demande aucun traitement de synchronisation suite aux modifications dans une DataGridView par exemple. 

   En ASP.NET 2.0, à ma connaissance, il n<st1:personname w:st="on">'</st1:personname>existe aucun mécanisme aussi simple !
Dans le cas d<st1:personname w:st="on">'</st1:personname>un control GridView par exemple, la classe ObjectDataSource offre un début de solution, mais il reste nécessaire de coder la synchronisation des propriétés des objets métiers pour chaque valeur modifiée, puisque les objets modifiés fournis grâce au Bind ne sont pas ceux initialement fournis au control. Je comprends que ce fonctionnement parait normal en Web, mais n<st1:personname w:st="on">'</st1:personname>existerait-il pas en 2.0 un mécanisme qui me libérerait de ce travail ?
Merci pour votre aide.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

2 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
1 avril 2008 à 18:53
Bonjour,

Il me semble que l'objectDatasource (ainsi que tous les XXXDataSource) permettent de faire ce que tu demandes (ou j'ai mal compris la question :p). En effet tu as une propriété UpdateMethod qui te permet de mettre à jour ton objet etc... bien sur il faut écrire le code correspondant à la méthode Update. T
Si tu veux pas écrire ce code, tu peux utiliser un sqldatasource, mais ca flingue toute la conception objet d'une application.

Les XXXDatasource parraissent interessant au premier abord, mais j'ai jamais réussit à les utiliser dans la vraie vie. Dans des cas simple de démos, c'est joli, c'est tout beau, mais dans des cas métier concrêts c'est très vite compliqué à gérer et c'est surtout indebuggable ... Bref si tu as un gridview qui ne fait que l'édition d'UNE table (pas de jointure & co) alors les XXXDataSource sont interessant, sinon je préfère passer par du binding "traditionnel"

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
3
CToph Messages postés 2 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 2 avril 2008
2 avril 2008 à 14:56
   Merci pour ta réponse.

   C'est bien au niveau de la méthode Update que mon problème se pose. Effectivement, je voudrais éviter d'écrire ce code de synchronisation entre l'objet retourné par "l'Update" et ma collection d'objets d'origine qui a servit à peupler le WebControl. Comme tu l'as compris, je garde l'état de mes objets métiers et ne désire pas travailler directement avec la base de données afin de préserver l'architecture entre autre. J'essaye de préserver un fonctionnement semblable à une application WinForm.

   Qu'appelles-tu du binding "traditionnel". Veux-tu dire par là l'utilisation d'un Eval puis un binding "à la main" pour prendre en compte les modifications ?
3
Rejoignez-nous