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 :

asp:ListView : Comment récupérer les informations d'une ligne ?


Sujet :

ASP.NET

  1. #1
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut asp:ListView : Comment récupérer les informations d'une ligne ?
    Salut,

    Dans ma page web, j'arrive à afficher des données à partir de ma source de données dans un composant asp:ListView.
    J'aimerais maintenant pouvoir travailler avec les données affichées dans mon ListView et pour l'instant j'aimerais récupérer les données associées à une ligne.

    Quelle méthode ou quelle propriété du ListView permet de récupérer le contenu d'une ligne ?
    Une illustration du fonctionnement par un extrait de code serait un plus.


    Merci.

  2. #2
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    Comme la plupart des contrôles utilisant une DataSource en ASP.NET (GridView, ListView, etc.), tu peux utiliser l'event DataBound pour accéder à tes données et les formater avant le rendu Html.

    Un exemple pour le ListView sur MSDN.

    En espérant t'avoir aidé.

  3. #3
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut
    Salut, merci d'avoir proposé une réponse.

    Avec l'event DataBound, je peux accéder à mes données pendant la création de mon objet ListView mais est il possible d'y accéder après ?

    C'est à dire que :
    - Dans un 1er temps je laisse s'afficher toutes les données dans mon contrôle asp:ListView.
    - Dans un 2ème temps, j'accède aux données présentes dans le ListView (ex: je veux les données contenues dans la ligne n°3 de mon ListView).

    Est il possible de faire cela ?
    Sinon ça m'oblige à mapper dynamiquement chaque ligne de données durant l'event DataBound... Je pense que l'on doit pouvoir faire plus simple.

  4. #4
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Citation Envoyé par Johann7751 Voir le message
    Sinon ça m'oblige à mapper dynamiquement chaque ligne de données durant l'event DataBound... Je pense que l'on doit pouvoir faire plus simple.
    Justement, ce mapping est réalisé à chaque PostBack. C'est comme pour les contrôles que tu ajoutes dynamiquement à ta page, tu dois les recréer à chaque PostBack.

    Pour faire plus simple et répondre au mieux à ta question, peux-tu expliquer ce que tu veux faire précisément ? Et quelle source de données utilises-tu (SQLDataSource, ObjectDataSource, LinqDataSource, ou encore un Bind manuel ?).

    En espérant t'avoir aidé.

  5. #5
    Membre habitué Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Points : 142
    Points
    142
    Par défaut
    Je vais essayer de préciser :


    1. Je vais chercher des données dans une table de ma base de données.
    2. J'affiche mes données (les enregistrements sélectionnes par ma requête) dans ma ListView. Chaque ligne de ma ListView correspond à un enregistrement dans ma table.

    (enregistrement = 1 ligne de dans ma table)


    3. Je met un bouton 'Modifier' pour chaque enregistrement dans ma ListView.




    Code de ma ListView dans la page aspx :


    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
    <asp:ListView ID="lvWarnings" runat="server" >
                                <LayoutTemplate>    
                                    <table border="1">
                                        <thead>
                                            <tr>
                                                <th>ID Avertissement</th>
                                                <th>Libellé Avertissement</th>
                                                <th>Action</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <asp:PlaceHolder runat="server" ID="itemPlaceHolder" />
                                        </tbody>
                                    </table>
                                </LayoutTemplate>
                                <ItemTemplate>
                                    <tr>
                                        <td><%# Eval("idWarning")%></td>
                                        <td><%# Eval("LibWarning")%></td>
                                        <td><asp:Button ID="btnUpdateWarning" runat="server" Text="Modifier" /></td>
                                    </tr>
                                </ItemTemplate>
                            </asp:ListView>
    4. Maintenant, je veux que quand j'appuie sur un bouton 'Modifier', je récupère les données associés à la ligne où se trouve le bouton 'Modifier', ou mieux encore, les données del'objet associé à la ligne.


    Parce que oui, une autre précision, j'ai initialisé les données dans ma ListView comme ceci, avec une liste d'objets "Warning" :

    Code behind, aspx.cs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lvWarnings.DataSource = a_listWarning;
    lvWarnings.DataBind();
    a_listWarning est une liste d'objet "Warning".



    Quelle méthode/propriété/évènement ? de la listView dois-je utiliser pour récupérer les données d'une ligne ?
    J'utiliserais ces données par la suite dans l'évènement Onclick un bouton "Modifier".

    [EDIT]

    Pour l'instant ma piste, c'est l'évènement ItemCommand de la listView ..

    [/EDIT]

  6. #6
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    Vu que tu n'utilises pas de SQLDataSource, mais une collections d'objet, tu dois faire des opérations CRUD à la main.

    Tu peux donc utiliser l'event onItemUpdating pour récupérer les données saisies par l'utilisateur, et enregistrer le tout en base. (un tuto avec exemple ici).

    Sinon pour que tu comprennes mieux ce qui se passe lors de l'Update pour une ListView, voici le process (source) :

    If the Update button is clicked a postback ensues and the updating workflow unfolds:
    The ListView raises its ItemUpdating event.
    The ListView assigns the values supplied in the editing interface to the update parameters for its associated data source control.
    The ListView assigns the key values for the row being updated to the update parameters for its associated data source control.
    The ListView calls its associated data source control's Update method, which actually performs the update.
    The ListView raises its ItemUpdated event handler.
    The ListView sets its EditIndex property to -1.
    The ListView rebinds to its data source.
    En espérant t'avoir aidé.

Discussions similaires

  1. Réponses: 11
    Dernier message: 02/03/2015, 17h31
  2. [AC-2000] Comment récupérer les informations d'une listbox
    Par Remus91 dans le forum IHM
    Réponses: 2
    Dernier message: 26/05/2009, 14h53
  3. Réponses: 3
    Dernier message: 10/03/2006, 14h15
  4. Réponses: 5
    Dernier message: 23/12/2005, 19h19

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