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 :

Des conditions sur l'ItemTemplate d'un Repeater


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif
    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 : 53
    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
    Points : 1 434
    Points
    1 434
    Par défaut Des conditions sur l'ItemTemplate d'un Repeater
    Bonjour tout le monde.
    Maintenant que j'ai gouté au Repeater, je trouve ça génial, du coup, je fonce.

    Là, je suis paumé parmi tout les Items et les Controls, bref, les deux collections n'ont pas l'air trés facile d'accés.

    A la fin du topic, y a mon code.

    Je voudrais que mon bouton appraisse selon une condition. Dans ma DataSource j'ai un champ qui contient soit 1 soit 0. Et donc si c'est 0 pas de bouton, si c'est 1 y a un bouton. Facile jusque là.

    J'ai plongé dans les collections Items et Controls pour tenter d'identifier le bouton, là où il est, mais visiblement je m'y prends mal.
    Alors, si j'ai bien compris et c'est là que j'ai besoins d'aide pour être sûr, la collection Items c'est les données, enfin, les éléments HTML avec les données dedans, el tout malaxer par le Repeater poura voir une bonne forme. Donc ce n'est pas par là que je vais pouvoir lui dire d'afficher ou pas le bouton ?

    La collections Controls c'est les Contrôles que j'ai placé dans l'ItemTemplate, côté HTML. Sauf que là, lrosque je plonge dedans, y a un moment où il ne me donne pas accés au bouton.

    Alors plusieurs pistes mesont venue en tête, mais vu qu'il y pas mal de code à faire pour les mettre en place, je préfère demander des vis avant.

    Faut il que je passe par un Itemplate sur mesure pour juste faire une bascule sur l'affichage du bouton ?
    Est ce qu'il n'y a pas un moyen plus rapide avec un FindControl pour trouver ce bon dieu de bouton dans tout ce fatras ?
    Enfin, point le plus dlicat : à quel moment je dois faire tout ça ? Visiblement si je le fait avant le DataBind, y a rien dans le Repeater.

    Voyez vous mon soucis et pouvez vous m'aider à comprendre ?

    Mon code HTML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <asp:Repeater ID="repFAQ" runat="server">
        <ItemTemplate>
        <asp:Table ID="tbl" runat="server">
            <asp:TableRow>
                <asp:TableCell><asp:Button ID="btn" runat="server" Text="Modifier" OnClick="ModifierFAQ" CommandArgument='<%#DataBinder.Eval(Container.DataItem, "IdFaq")%>' /></asp:TableCell>
                <asp:TableCell><%#DataBinder.Eval(Container.DataItem, "Question")%></asp:TableCell>
                <asp:TableCell><%#DataBinder.Eval(Container.DataItem, "Ordre")%></asp:TableCell>
            </asp:TableRow>
            <asp:TableRow>
                <asp:TableCell ColumnSpan="3"><%#DataBinder.Eval(Container.DataItem, "Reponse")%></asp:TableCell>
            </asp:TableRow>
        </asp:Table>
        </ItemTemplate>
    </asp:Repeater>
    Mon CodeBehind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            Dim dt As DataTable = New DManager("DataDev").RetournerTable("SELECT * FROM FAQ WHERE UserId IN ('" & Session("SES_UserIdStr") & "','" & Session("SES_ApplicationStr") & "')")
            With repFAQ
                .DataSource = dt
                .DataBind()
            End With
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Essaie de binder la propriété Visible sur le champ qui indique si le bouton doit être affiché
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Visible='<%#DataBinder.Eval(Container.DataItem, "BoutonVisible")%>'

  3. #3
    Membre extrêmement actif
    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 : 53
    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
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    Je vais implémenter ça, je pense que ça devrait marcher, sans trop de souci.

    Mais, poussons l'idée un poil plus loin : si je suis face à un choix supérier à 2, genre a, b et c et que je doive modifier le text du bouton selon a, b ou c, comment je peux faire ?

    Mon idée c'était de pouvoir faire un IF quelque part dans le CodeBehind (endroit que je ne trouve pas) et de manipuler le contrôle choisi (accés que je ne trouve pas non plus).

    Vois tu ce que je veux dire ?

    Bonne soirée.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Tu peux écrire une fonction dans le code-behind, qui tu appelles dans le binding :

    Code ASP.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    Text='<%# UneFonction(DataBinder.Eval(Container.DataItem, "UnChamp"))%>'

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function UneFonction(ByVal valeur As Object) As String
        If valeur = 1 Then
            Return "titi"
        Else If valeur = 2 Then
            Return "tata"
        Else
            Return "toto"
        End If
    End Function

  5. #5
    Membre extrêmement actif
    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 : 53
    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
    Points : 1 434
    Points
    1 434
    Par défaut
    ça marche super bien.

    Merci à toi

    Et en plus, ça ouvre des perspectives d'enfer. Je savais pas qu'on pouvait appeller des Function à partir des paramettres des contrôles côté HTML.

    ça va me faciliter la vie sur plein de truc.

    Alors question subsidiaire (même si je boucle le topic) : dans le cycle de la page, à quel moment se fait l'évalutation de la partie DataBinder ?
    Je me doute que c'est dans l'évènement DataBound, mais j'ai du mal à le situer par rapport aux évènements de la page.

    Je vais détailler : j'ai rémarqué que les contrôles côté HTML étaient initialisés avant le Init de la page, mais qu'ils subissaient des modification jusqu'au UnLoad. ALors à quel moment le DataBinder arrive et place les données et, par extension, exécute la Function mise en place dans notre cas ?

    Encore merci et un bon week-end à toi.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Alors question subsidiaire (même si je boucle le topic) : dans le cycle de la page, à quel moment se fait l'évalutation de la partie DataBinder ?
    Je me doute que c'est dans l'évènement DataBound, mais j'ai du mal à le situer par rapport aux évènements de la page.

    Je vais détailler : j'ai rémarqué que les contrôles côté HTML étaient initialisés avant le Init de la page, mais qu'ils subissaient des modification jusqu'au UnLoad. ALors à quel moment le DataBinder arrive et place les données et, par extension, exécute la Function mise en place dans notre cas ?
    Si j'en crois cette page, il semblerait que ça soit dans le PreRender, puisque c'est là que le binding est fait

  7. #7
    Membre extrêmement actif
    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 : 53
    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
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci Thomas, je vais travailler ça ce matin.

    @ +
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/07/2008, 09h29
  2. Réponses: 3
    Dernier message: 13/04/2008, 10h52
  3. Paginate avec des conditions sur les clés etrangères.
    Par CeDRiC08 dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 03/07/2007, 09h49
  4. faire des conditions sur les champs
    Par biba158 dans le forum JDBC
    Réponses: 9
    Dernier message: 25/06/2007, 13h38
  5. Problème de requête avec cumul des conditions sur un champ
    Par UtopieAmbiante dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2006, 10h52

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