Pb de modification dans un datagrid

Kahoola Messages postés 11 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 31 mai 2005 - 21 avril 2005 à 11:46
Kahoola Messages postés 11 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 31 mai 2005 - 21 avril 2005 à 17:09
Bonjour,



je suis actuellemnt en train de developper un site intranet en asp.net.
Je suis débutante dans ce langage alors j'aurais besoin d'aide.

Pour travailler sur des bases de donner par le site, j'utilise un
Datagrid qui est consitué d'une colonne modèle non visible qui contient
l'identifiant (clé) de la table , les colonnes visibles pour les
différents champs et enfin deux autres colonnes de boutons : l'une avec
le bouton "Supprimer" et l'autre avec "Modifier".

LA suppression ne me pose aucun souci lorsque j'appelle DeleteCommand
sur le DataGrid où je fais la requete DELETE ,car j'arrive a récuperer
l'identifiant de la colonne modele.

Voici le code de la requete :


Dim Cmd As String "DELETE FROM Site WHERE id_site " & CType(e.Item.Cells(0).Controls(1), Label).Text



Par contre , c'est la modification qui me pose problème
: pour ma requete UPDATE , je veux recupérer l'identifiant de la même
manière que ma requete DELETE mais ca ne marche pas.

Voici le code :


Dim Cmd As String = " UPDATE Site SET " & _

" nom_site = ' " & CType(e.Item.Cells(2).Controls(0), TextBox).Text & _

" ' WHERE id_site = " & CType(e.Item.Cells(0).Controls(1), Label).Text




Pour le meme code (celui en rouge) , j'ai une erreur
pour l'UPDATE que je n'ai pas pour le DELETE.: (erreur : le cast
spécifié n'est pas valide.)

Je ne comprends pas pourquoi ca marche pour une requete et pas pour l'autre!!



J'espère être assez clair et que vous allez pouvoir ml'aider car je bloque la - dessus et je commence à tourner en rond!!!



Merci d'avance

Kahoola

7 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
21 avril 2005 à 12:47
fais un point d'arret sur la ligne et regarde le type de e.Item.Cells(0).Controls(1)
apparement
c'est pas un Label, ce qui serait bizarre vu que plus haut ca marche.
Donc regarde en mettant un point d'arret, et ca peux venir du fait que
tu sois pas dans le bon evenement.

<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
Kahoola Messages postés 11 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 31 mai 2005
21 avril 2005 à 14:41
J'utilise depuis peu
Visual Studio alors je ne sais pas vraiment utiliser les points d'arrêt
mais j'ai utilisé un espion sur le point d'arrêt que tu m'avais
conseillé de faire et il m'informe que pour la ligne de condition avec


WHERE id_site = " & CType(e.Item.Cells(0).Controls(1), Label).Text ,

il est impossible de convertir en Class Label



J'ai essayé en remplacant Label par un T'extBox , il ne me fait plus
d'erreurs de Cast et réagit comme si la modification avait été
faite
(retour au tableau sans textbox)
mais les données ne sont pas modifiées . :(
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
21 avril 2005 à 15:23
Salut,

Tu peux aussi faire cela de la facon suivante:

Admettons que mon identifiant soit la colonne PK_ID
ajoute la propriété dans ton datagrid:

DataKeyField="PK_ID"

ensuite pour récupérer l'identifiant:
mondatagrid..DataKeys(e.Item.ItemIndex)

c'est plus simple... (malheureusement ca ne fonction qu'avec les entités ayant une clé basée sur une seule colonne).
yopyop
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
21 avril 2005 à 15:24
mondatagrid.DataKeys(e.Item.ItemIndex)

yopyop
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kahoola Messages postés 11 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 31 mai 2005
21 avril 2005 à 16:21
Merci beaucoup yopyop, ca marche et c'est vrai que c'est plus simple !

Je trouve quand meme bizarre que ca marche pour une et par pour l'autre, m'enfin...

Merci aussi a jesusonline



Kahoola
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
21 avril 2005 à 16:42
re,

en fait il vaut mieux éviter les labels pour ce genre de chose.

ce qui se passe c'est que lors de la génération de la page, .MET ajoute
des labels un peu partout donc ensuite il est très difficile de passer
par e.item.cells(X)... pour retrouver le bon contrôle.

dans ton cas tu as certainement un EditItemTemplate qui est différent de ton
ItemTemplate.. les contrôles ne se trouvent donc plus à la même position
à cause des labels ajoutés à la volée...

yopyop
0
Kahoola Messages postés 11 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 31 mai 2005
21 avril 2005 à 17:09
Oui en effet mon ItemTemplate et mon EditItemTemplate sont différents.

Je vais suivre ton conseil et éviter de passer par des Labels pour mes requetes.



Merci encore



Kahoola
0
Rejoignez-nous