ObjectDataSource - could not find a non-generic method 'Update' that has parame

Résolu
magikbanana Messages postés 17 Date d'inscription vendredi 3 février 2006 Statut Membre Dernière intervention 8 août 2008 - 24 sept. 2007 à 11:02
magikbanana Messages postés 17 Date d'inscription vendredi 3 février 2006 Statut Membre Dernière intervention 8 août 2008 - 24 sept. 2007 à 17:02
Bonjour,

Lorsque je fais un Update avec mon GridView, j'obtiens l'erreur : "could not find a non-generic method 'Update' that has parameters..."
Après quelques recherches il semble qu'il soit nécessaire d'afficher la clé primaire et de la laisser modifiable, ce qui n'est pas du tout acceptable dans mon cas.

Voici une description du problème https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=260674 , cependant je ne peux pas attendre la prochaine version de VS pour profiter de ce fix.

Auriez-vous une solution pour contourner ce problème avec mon GridView ?

Merci !

4 réponses

magikbanana Messages postés 17 Date d'inscription vendredi 3 février 2006 Statut Membre Dernière intervention 8 août 2008
24 sept. 2007 à 16:32
Justement non puisque lorsque l'on spécifie un attribut comme non-visible il n'est plus envoyé dans la requête, et l'ID est absolument obligatoire.
D'ailleurs le UpdateCommand du TableAdapter prenait trop de paramètres puisque je n'affichais pas tous les champs dans ma GridView donc il faut faire attention à ça aussi.

Voici la solution : http://weblogs.asp.net/bradygaster/archive/2006/09/26/How-to-Bloody-Your-Forehead.aspx
3
equinoxe83 Messages postés 240 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 18 février 2011
24 sept. 2007 à 16:48
OK. C'est une bonne démarche. Merci pour le lien.
Personnellement, j'ai quand même une préférence pour la conservation des infos dans le gridview.
Un membre de notre site favoris  m'a gentillement donné l'astuce :
si tu ne veux pas retirer la colonne, tu lui applique un style particulier. J'ai trouvé ça génialement simple !!

donc, dans ces cas là, j'utilise les propriétés suivantes dans la colonne à "effacer" de gridview:

- dans le code du gridview :
<

asp:BoundField
DataField="codeDisponibilite"
HeaderText="codeDisponibilite"
InsertVisible="False"

ReadOnly="True"
SortExpression="codeDisponibilite">

    <ItemStyle
CssClass="codeFamille"
/>

    <HeaderStyle
CssClass="codeFamille"
/>

</asp:BoundField>et dans ma css, j'ai :

.codeFamille

{

display :
none}

ça me permet même de créer des colonnes de contrôle en évitant des boucles de test compliquées en code behind !!

@+

de la colonne
3
equinoxe83 Messages postés 240 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 18 février 2011
24 sept. 2007 à 13:22
Bonjour,
Je ne vois pourquoi celà te pose un Pb ?
Dans l'article, il est fait référence à une "confusion" lors de l'utilisation de gridviews et detailsviews.
Il te suffit d'aller modifier la colonne et de placer le champs en non visible. Il ne sera ainsi pas accessible par les utilisateurs.
@+
0
magikbanana Messages postés 17 Date d'inscription vendredi 3 février 2006 Statut Membre Dernière intervention 8 août 2008
24 sept. 2007 à 17:02
Justement à un moment (de désespoir) j'étais parti sur la solution de rendre la colonne invisible donc quand on est pressé je trouve que c'est une bonne solution simple à utiliser.

Merci pour cette astuce que je garde de côté :)
0
Rejoignez-nous