ObjectDataSource - could not find a non-generic method 'Update' that has parame [Résolu]

Signaler
Messages postés
17
Date d'inscription
vendredi 3 février 2006
Statut
Membre
Dernière intervention
8 août 2008
-
magikbanana
Messages postés
17
Date d'inscription
vendredi 3 février 2006
Statut
Membre
Dernière intervention
8 août 2008
-
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 !
A voir également:

4 réponses

Messages postés
17
Date d'inscription
vendredi 3 février 2006
Statut
Membre
Dernière intervention
8 août 2008

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
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

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
Messages postés
240
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
18 février 2011

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.
@+
Messages postés
17
Date d'inscription
vendredi 3 février 2006
Statut
Membre
Dernière intervention
8 août 2008

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é :)