IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Les opérations de modification de données dans un GridView


Sujet :

ASP.NET

  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Les opérations de modification de données dans un GridView
    Salut

    Je mets en place un GridView pour la première fois et patauge un peu.
    J'ai parcouru mon bouquin de l'ENI, la MSDN et un peu le NET et je trouve pas ce qu'il me faut.

    Est ce que quelqu'un pourrait me donner la base pour gérer la modification de données, sachant que les données ne sont pas forcément dans la BDD.

    Voici mon code, je cherche à mettre ce qu'il faut à la place des XXXX. Je voudrais pouvoir savoir quel champs à été modifié et tenté un Select Case car mes opérations sont différentes en fonction du champs choisi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Imports System.Data
    Imports System.Web.Security
     
    Partial Class Zorglub_Default
    	Inherits System.Web.UI.Page
     
    	Protected Sub gvListepilote_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles gvListepilote.RowCancelingEdit
    		e.Cancel = True YYYY
    	End Sub
     
    	Protected Sub gvListepilote_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles gvListepilote.RowEditing
    		gvListepilote.EditIndex = e.NewEditIndex
    	End Sub
     
    Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
    	Dim Table As New DataTable
    	Dim row As DataRow
    	Dim column As DataColumn
     
    	Dim ListePilote As MembershipUserCollection
    	ListePilote = Membership.GetAllUsers
    	For Each u As System.Web.Security.MembershipUser In ListePilote
    		row = Table.NewRow()
    		row("Nom Pilote") = Profile.GetProfile(u.UserName).UserName
    		row("Accelération") = Profile.GetProfile(u.UserName).Acceleration
    		row("Blocage") = u.IsLockedOut
    		Table.Rows.Add(row)
    		Next
     
    		gvListepilote.DataSource = Table
    		gvListepilote.DataBind()
    	End Sub
     
    	Protected Sub gvListepilote_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gvListepilote.RowUpdating
    XXXX
    	End Sub
    End Class
    Accessoirement, là où il y a les YYYY, je ne trouve pas le moyen de faire en sorte que lrosque je cliqu sur Annuler, le mode édition se referme.

    Merci pour votre aide.

  2. #2
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Euh, c'est si compliqué que ça pour que personne en trouve de solution ou j'ai mal présenté le problème ?

    Merci

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 60
    Par défaut
    Pour le YYYY

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gvListepilote.EditIndex = -1

  4. #4
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci, pour le -1, j'y avais pas pensé.

    Mais pour le reste alors, aprce que j'ai beau chercher partout, je vois pas bien comment faire.

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 60
    Par défaut
    J'ai pas trop compris exactement ce que tu voulais...
    Mais quand tu arrive dans la methode RowUpdating, tu sais quel ligne tu as modifié, en base t'as toujours les anciennes valeurs, dans ton gridview les nouvelles. Apres t'as plus qu'a faire les traitements que tu souhaite ...

  6. #6
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    En fait, non, c'est pas exactement ça.

    Quand j'arrive dans RowUpdating je voudrais récupérer les nom des valeurs qui ont été modifiées.
    Parce que me valeur ne sont pas toute en base de données et donc en fonction des valeur concernée je dois soit
    - mettre à jour une propriété d'un objet
    - updateé la bdd
    - modifier une valeur du MemberShip

    Mon souci est que je n'arrive pas à trouver ce qu'il faut pour capter le nom de la valeur modifiée et la liste des valeurs modifiées.

    Est ce que je suis plus clair comme ça ?

  7. #7
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Ben alors, vraiment personne d'autre ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Par défaut
    Ce n'est pas dans lerowupdating que tu dois agir tout de suite. le rowupdating te sert à faire ta requete après que ton gridview est en mode edit (que j'explique plus bas). mais je pense que t'as déjà qq pb sur la mise en place de ton gridview

    ce que tu dois retenir avec le gridview, c'est que pour bénéficier de ses nombreux avantages (tri auto, paging auto, updating, deleting,etc), tu dois le mettre en place avec un sqldatasource ou accessdatasource, etc. c'est avec ce webcontrol que tu fera tes requetes pour le générer, l'updater - dans le rowupdating - ou le supprimer. donc fait des recherches dessus...pour voir selon tes besoins...

    Pour le lier au gridview, t'as juste à mettre dans tes attributs qui définissent ce dernier, 'datasourceid='monIdSqlDatasource''

    ensuite grâce à cela, il te suffit juste de mettre dans ton contrôle 'AutoGenerateEditButton='true' '. Quand tu génèreras ta page par la suite, il t'afficheras ton gridview avec une première colonne composée d'hyperlinkbutton nommées 'edit' et quand tu cliqueras sur ceux-ci, ton gridview se mettra automatiquement en mode edit...

    pour des exemples, reprends le meme lien que je t'ai donné dans ton précédent topic et va dans gridview sur le menu de gauche.

    N'hésite pas à me poser des questions si tu rencontres des pb

  9. #9
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour ton aide.

    J'entends bien ce que tu dis et j'utilse assez régulièrement ce genre de chose, même si j'ai une préférence pour les DataTable comme Datasource des GridView (mais ça c'est parce que mon FrameWork perso me retourne des DataTable).

    Mon souci est un peu différent : ce que j'ai à enregistré comme modification n'est pas dans une base de données. Je dois modifier les propriétés du Profile issu du MemberShip.

    Pour être plus précis, la commande que je dois exécuter est de ce type là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    profile.propriété = champdugridview.valeur
    profile.save()
    Donc, un SqlDataSource ne me permet pas ce genre de chose puisqu'il va directement se pluger sur la BDD.
    Voilà pourquoi je cherche à intercepter la bonne méthode pour y glisser le code au bon moment.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Par défaut
    Je pense donc que tu vas etre ennuyer car on est obligé de déployer ces webcontrols pour le gridview, sans quoi, tout ce qui concerne l'automatisation des tâches du gridview ne marcheront pas...il va falloir que tu fasses tout à la main peut-être...

  11. #11
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    C'est bien ce que je craignais, mais bon, c'est cool de programmer

    L'ennui c'est que, et c'est en fait l'origine de mon topic, je ne trouve pas le moyen de récupérer l'identifiant de la ligne modifiée de façon à récupérer les nouvelles valeurs et ensuite faire les traitements had'oc.

    Mon problème est là, en fait.

    Merci

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 102
    Par défaut
    peut-être tourne toi vers le datakeys dans le gridview
    tu met en datakeys ton identifiant ainsi qu'un autogenerateselectbutton=true et lorsque t'appuieras sur le select de la ligne, tu pourras récupéréer ton datakey en faisant tonGV.datakeys(e.row.rowindex).value dans l'event selectedrowindexchanging ou alors dans ton rowupdating, ca devrait revenir au meme.

    enfin, le plus important dans mon message à retenir est le datakey (peut-être connais tu) qui va te définir l'identifiant que tu auras mis auparavant dans les attributs du gridview et qui te permet de le récupérer à n'importe quel moment avec la syntaxe que j'ai mis ci-dessus pour une ligne donnée en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tonGV.datakeys(0).value
    pour récupérer le datakey de ta première ligne (row(0))

  13. #13
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci à toi thewaterkidny.
    J'ai pas fait exactement comme tu dis, parce que j'ai pas de SqlDataSource de mis en place, mais ça marche bien.

    J'ai pas mal ramé sur la mise à jour dans le Profile et le MemberShip (parce que y a une différence......) mais ça donne de bons résultats

    En totu cas, vraiment merci, sans m'apporter la solution toute cuite, tu m'a mis sur la bonne voie et j'ai découvert des trucs super sympa.

    A la prochaine.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modification des données dans un gridview
    Par marie-anne dans le forum VB.NET
    Réponses: 6
    Dernier message: 08/11/2010, 15h45
  2. Réponses: 2
    Dernier message: 29/07/2008, 09h13
  3. Interdire les modifications des données dans une JTable
    Par markfish55 dans le forum Composants
    Réponses: 3
    Dernier message: 19/12/2006, 15h48
  4. Réponses: 11
    Dernier message: 16/05/2006, 12h34
  5. Réponses: 6
    Dernier message: 15/02/2006, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo