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 :

[GridView] Récupérer l'objet de la ligne sélectionné


Sujet :

ASP.NET

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut [GridView] Récupérer l'objet de la ligne sélectionné
    Bonjour,

    J'ai un GridView que j'alimente avec une List d'objets que je récupére de la base. Ce GridView affiche en aperçu ma liste d'objets (Pas tt les champs, car ce sont des objets complexes), j'ai ajouté une column ButtonField. Et ce que je voulais c'est récupérer l'objet correspondant à la ligne du ButtonField ... Et l'afficher en détail dans une autre page.

    J'utilise pour cela OnRowCommand. Et une méthode dans le Code Behind qui va bien, je récupére la ligne avec e.CommandArgument

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <asp:GridView ID ... OnRowCommand = "MyGridView_RowCommand"/>
    <Columns>
    <asp:BoundField ...>
    ...
    <asp:BoundField ...>
    <asp:BouttonField ...>
    </asp:Columns>
    </asp:GridView>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void MyGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
    {
    int index = convert.ToInt32(e.CommandArgument);
    Session["MyObject"] = MyGridView.Rows[index];
    Response.Redirect("Page.aspx");
    }
    Je me doutais que ça n'allait pas marcher tel que je l'ai fais (puisque je sais pas trop comment récupérer mon Objet du GridView sous la même forme que je l'ai passé dans ma DataSource), mais le problème c'est que quand j'appuie sur le buttonField il ne passe pas par ma méthode.

    Merci d'avance aux âmes charitables qui essaieront de m'aider.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Arfff ***** de VS, je l'ai arrêté et relancé et il passe par ou je veux mnt (j'ai même mis l'event SelectedIndexChanged et il ne passait tjs pas, donc j'ai relancé et la ça marche )

    Maintenant il me reste à savoir s'il est possible de récupérer du GridView mon objet sous la même forme que dans la collection que j'ai passé dans le DataSource.
    Quelqu'un sait comment faire cela ?

    Il n y a que l'utilisation du DataKeys comme solution ??

    Merci d'avance.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Je reformule ma question :

    Est ce qu'on peut récupérer d'un GridView les données sous la forme objet, si le datasource est une collection d'objets ? En particulier l'objet correspondant à la ligne selectionné ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyGridView.DataSource = (List<MonObjet>)MesObjets
    D'avance merci.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 619
    Points
    1 619
    Par défaut
    en fait tu veux avoir l'objet récupérer au moment de la selection de ta ligne.
    mate du coté des DataKeyNames et donc des DataKey

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Citation Envoyé par rattlehead Voir le message
    en fait tu veux avoir l'objet récupérer au moment de la selection de ta ligne.
    mate du coté des DataKeyNames et donc des DataKey
    Pour les Datakey, si j'ai bien compris il pointe sur l'identifiant, non ?
    Je ne veux pas seulement savoir quelle ligne j'ai selectionné (ce que je peux faire avec SelectedValue). Ce que je veux, c'est récupéré l'objet MonObjet tel que je l'ai passé dans mon DataSource (List<MonObjet>), pour que je puisse l'afficher plus en détail dans une autre Page (en le passant en parametre).

    Merci pour ta réponse et pour ton aide.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 619
    Points
    1 619
    Par défaut
    bah si tu as l'id tu fais une recherche dans ta list et puis c'est bon. pourquoi chercher plus loin?

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Citation Envoyé par rattlehead Voir le message
    bah si tu as l'id tu fais une recherche dans ta list et puis c'est bon. pourquoi chercher plus loin?
    Qd tu dis recherche, c'est parcourir la liste jusqu'à trouver l'objet ? Du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Foreach(MonObjet in List<MonObjet){
            if(MonObjet.id = id)
            ...
    }
    Merci à toi en tt cas.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 619
    Points
    1 619
    Par défaut
    même mieux, dans la classe List tu as une méthode Find à laquelle tu fournis un delegate qui va te permettre de faire ta recherche.
    mate dans la msdn ca te parlera plus.

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Citation Envoyé par rattlehead Voir le message
    même mieux, dans la classe List tu as une méthode Find à laquelle tu fournis un delegate qui va te permettre de faire ta recherche.
    mate dans la msdn ca te parlera plus.
    J'ai tenté cette solution, mais y a un probléme qui se pose à ce niveau ...

    La méthode doit être statique et moi je dois récupérer dans cette méthode l'ID (donc pas de this puisque méthode statique) à moins que je passe par une variable globale

    Merci pour ton aide en tt cas.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 619
    Points
    1 619
    Par défaut
    non elle n'est pas static la methode. tu as un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maList.Find(delegate(){})

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/10/2008, 13h56
  2. Réponses: 12
    Dernier message: 18/06/2008, 14h20
  3. Gridview récupérer la page et la ligne du last insert
    Par LhIaScZkTer dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/02/2008, 10h01
  4. Récupérer le numéro de la ligne sélectionnée dans une variable?
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/10/2007, 11h48
  5. Récupérer l'objet associé à une ligne de datagrid
    Par tiboleo dans le forum ASP.NET
    Réponses: 1
    Dernier message: 18/04/2007, 10h16

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