Pb de modification dans un datagrid

Signaler
Messages postés
11
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
31 mai 2005
-
Messages postés
11
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
31 mai 2005
-
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

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
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
Messages postés
11
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
31 mai 2005

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 . :(
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
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
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
mondatagrid.DataKeys(e.Item.ItemIndex)

yopyop
Messages postés
11
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
31 mai 2005

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
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
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
Messages postés
11
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
31 mai 2005

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