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 :

Récupérer des controles dans une listview imbriquée


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 31
    Points
    31
    Par défaut Récupérer des controles dans une listview imbriquée
    Dans une page Web, j'ai deux listview imbriquées. La deuxième contient des controles, notamment une textbox, un controle utilisateur contenant une dropdownlist. Je voudrais récupérer la valeur de ces controles au moment de l'enregistrement ( bouton IB_panelenregistrer ). Je voudrais également récupérer la valeur de l'élément de la première listview ( <%# Eval("LibRubrique") %> ) qui n'est pas accessible dans la deuxième listview.

    Voici le code de 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
            <asp:ListView ID="LV_Rubrique" runat="server">
            <LayoutTemplate>
                <table runat="server" align="left">
                <thead>
                <tr>
                <th><asp:LinkButton ID="LinkButtonAjouterRubrique" runat="server">Ajouter une rubrique</asp:LinkButton></th>
                </tr>
                </thead>
                <tr runat="server" id="itemPlaceholder"></tr>
                </table>
            </LayoutTemplate>
            <ItemTemplate>
                <tr>
                    <td> <h3><%# Eval("LibRubrique") %></h3></td>
                </tr>
                <tr>
                    <td>
                        <asp:ListView id="LV_Paragraphe" runat="server" DataSource='<%# Eval("ListeParagraphe") %>' >
                            <LayoutTemplate>
                            <table>
                            <tr>
                            <td><div runat="server" id="itemPlaceholder"></div></td>
                            </tr>
                            </table>
                            </LayoutTemplate>
                            <ItemTemplate>
                               <table>
                               <tr>
                               <td>
                                    <asp:ImageButton ID="ImgFlecheHaut" runat="server" ImageUrl="~/Images/FlecheHaut.jpg" CssClass="dimButton" Height="12px" />
                               </td>
                               <td>
                                    <asp:ImageButton ID="ImgFlecheBas" runat="server" ImageUrl="~/Images/FlecheBas.jpg" CssClass="dimButton" Height="12px" />
                               </td>
                               <td width="750px">
                               <%# Eval("LibParagraphe") %>
                               </td>
                               <td width="100px">
                               <%# Eval("LibStyle") %>
                               </td>
                               <td>
                                    <asp:ImageButton ID="ImgModifier" runat="server" ImageUrl="~/Images/modifier.png" CssClass="dimButton" Height="12px" OnCommand="ImageButtonModifier_OnCommand" CommandArgument='<%# Eval("IdStyle") %>' />
                               </td>
                               <td>                               
                                    <asp:ImageButton ID="ImgSupprimer" runat="server" ImageUrl="~/Images/poubelle.png" CssClass="dimButton" Height="12px" OnCommand="ImageButtonSupprimer_OnCommand" CommandArgument='<%# Eval("ID_Paragraphe") %>'/>
                                    <asp:ConfirmButtonExtender ID="ConfirmButtonExtender1" runat="server" TargetControlID="ImgSupprimer" ConfirmText="Confirmez-vous la suppression ?">
                                   </asp:ConfirmButtonExtender>
                               </td>
                               </tr>
                               </table>
                               <asp:Panel ID="ModalPanelModifier" runat="server" Width="800px"  BorderStyle="Groove" BackColor="White">
                               <table>
                                   <tr>
                                   <td>
                                   <asp:TextBox ID="TBpanelParagraphe" runat="server" Text='<%# Eval("LibParagraphe") %>' TextMode="MultiLine" Width="750px" BorderStyle="None" Font-Names="eurostile"></asp:TextBox>
                                   </td>
                                   </tr>                              
                               </table>
                               <table>
                                   <tr>
                                   <td>
                                   <asp:ImageButton ID="IB_panelenregistrer" runat="server" Height="12px" ImageUrl="~/Images/save.png" OnCommand="Enregistrer_Paragraphe_OnCommand" />
                                   &nbsp
                                   <asp:ImageButton ID="IB_panelretour" runat="server" Height="12px" ImageUrl="~/Images/return.png" />
                                   &nbsp
                                   <uc1:WUCStyle ID="WUCStyle1" runat="server"/>
                                   </td>
                                   </tr>
                               </table>
                               </asp:Panel>
                               <asp:ModalPopupExtender ID="MPE_Modifier" runat="server" TargetControlID="ImgModifier" PopupControlID="ModalPanelModifier" OkControlID="IB_panelretour" >
                               </asp:ModalPopupExtender>
     
                            </ItemTemplate>
                        </asp:ListView>
                    </td>
                </tr>
                <tr>
                <td>
                    <asp:LinkButton ID="LinkButtonAjouterParagraphe" runat="server" OnCommand="LinkButtonAjouterParagraphe_OnCommand" CommandArgument='<%# Eval("IdRubrique") %>' >Ajouter un paragraphe</asp:LinkButton>
                </td>           
                </tr>
            </ItemTemplate>
            </asp:ListView>
    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    Un petit passage ici : http://club.developpez.com/regles/ ne fera pas de mal (en particulier le point 3.5).

    Merci.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 31
    Points
    31
    Par défaut Quelqu'un a t'il une information à ce sujet ?
    J'ai fait la modification pour le code.
    Merci de me communiquer vos informations sur le sujet.

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par ERICLEUN Voir le message
    J'ai fait la modification pour le code.
    Merci, je n'avais pas vu la modification

    Donc concernant ton problème, je te suggère d'utiliser une méthode récursive qui va parcourir les Controls de la page, et trouver ce qui t'intéresse. Voici la méthode :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private Control FindControlRecursive(Control root, string id)
    {
        if (root.ID == id)
        {
            return root;
        }
     
        return (from Control c in root.Controls
            select FindControlRecursive(c, id)).FirstOrDefault(t => t != null);
    }
    Voici comment l'utiliser :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void IB_panelenregistrer_Click(object sender, EventArgs e)
    {
        var searchedControl = FindControlRecursive(LV_Rubrique, "TBpanelParagraphe");
    }
    En adaptant ce code à ton besoin, tu devrais réussir à faire ce que tu souhaites.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Merci de cette information, je vais la mettre en application et vous en faire un retour

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    J'ai appliqué le traitement, il détecte bien les controles mais retourne le premier controle et non pas celui en cours.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    searchedControl = FindControlRecursive(LV_Rubrique, "TBpanelParagraphe");
                if (searchedControl != null)
                {
                    libparagraphe = ((TextBox)searchedControl).Text;
                }
    Donc dans libparagraphe j'obtiens le texte du 1er paragraphe et non celui du paragraphe sélectionné.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Une solution est de partir du controle courant et de remonter la file des controles plutôt que de partir du contrôle root et de redescendre.
    Voici le code correspondant :
    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
     protected void Enregistrer_Paragraphe_OnCommand(object sender, CommandEventArgs e)
            {
     
                int idstyle = 0;           
                string libparagraphe="";
     
                ImageButton sendingButton = (ImageButton)sender;
     
                Panel container = (Panel)sendingButton.Parent;
     
                TextBox TBpanelParagraphe = (TextBox)container.FindControl("TBpanelParagraphe");
                libparagraphe = TBpanelParagraphe.Text.Trim();
     
                WUCStyle WUCStyle1 = (WUCStyle)container.FindControl("WUCStyle1");
                idstyle = Int32.Parse(WUCStyle1.DropDownListStyle.SelectedValue);
            }

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

Discussions similaires

  1. Récupérer des informations dans une ListView (par exemple un ID)
    Par Berlo56 dans le forum Composants graphiques
    Réponses: 7
    Dernier message: 06/06/2014, 08h46
  2. Récupérer des info dans une page html
    Par DORBRITZ dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 06/03/2008, 11h13
  3. Réponses: 2
    Dernier message: 12/04/2006, 10h00
  4. Récupérer des données dans une page HTML
    Par newdelirium dans le forum Langage
    Réponses: 3
    Dernier message: 26/10/2005, 19h18
  5. ajouter des control dans une onglet de sstab sous VB6
    Par aymane_farissi dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/09/2005, 13h44

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