09/03/2008

ObjectDataSource et champs caché

Lorsque l'on connecte une source de données ObjectDataSource avec une GridView, les champs cachés dans la grille sont passés à null dans la méthode Update.Hors ce n’est pas vraiment le cas d'emplois idéal.Par exemple avec une classe Contact composée des classiques informations d'un contact. Lorsque l'on affiche une grille pour cette objet a priori on ne va pas afficher toutes les donnés de la classe.Le problème c'est que l'appel fait par la GridView à la méthode Update de l'ObjectDataSource passe les valeurs des paramètres cachés de la grille à null.Du coup votre objet en modification ce fait supprimer des valeurs simplement parce qu’elles ne sont pas affichées !!!
Bon ça c'était pour le problème.

J'ai deux solutions au problème :

  • La solution est simple il faut utiliser des HiddenFields au lieu d'utiliser des BoundFields avec Visible ou Enable définit à false.
  • L'autre solution c'est de mettre tout les champs qui ne sont pas affichés dans le DataKeys de la GridView.De toutes façon lors de la mise à jour de l'objet, il connait de manière intresecte les champs qui son ses clés.

Je trouve tout de même que l'implémentation n'est pas propre, mais je n'ai rien trouvé d'autres.

Quelqu'un à une idée ?

1 commentaire:

Anonyme a dit…
Ce commentaire a été supprimé par un administrateur du blog.