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 :

masquer les champs vide d'un repeater


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut masquer les champs vide d'un repeater
    salut,
    j'ai un repeater; dans ce derniers j'ai bindé mes donnees dans un tableau je veux masquer l'affichage des champs vides
    j'ai procédé comme ci dessous, ça fonctionne mais le probleme c'est que j'ai perdu la mis en forme de mon tableau..j'ai plus la grille
    les donnees sont ecrites successivement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.DataItem == null)
            {
                e.Item.Visible = false;
     
            }

  2. #2
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Bonjour,

    pourrais-tu donner le code de ton repeater ?

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    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
     
    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" OnItemCommand="Repeater1_ItemCommand" OnItemDataBound="Repeater1_ItemDataBound">
     
            <HeaderTemplate>
     <center><table border="1" cellpadding="3" style="border-collapse:collapse" width="60%">
      <caption style="color:Fuchsia"><b>Liste de Pointage</b></caption>
                 <tr>
    <th align="center">Pointage</th>
    <th align="center">Heure</th>
    <th align="center">Motif</th>
               </tr>
     
           </HeaderTemplate>
     
     
            <ItemTemplate>           
            <tr>
            <td colspan='3'><center><%# DataBinder.Eval(Container.DataItem, "datePointage") %></center></td>
            </tr>
     
     
     
     
         <tr> 
         <td>pointage 1</td>  
        <td><%# DataBinder.Eval(Container.DataItem, "pointage1") %></td>
        <td><%# DataBinder.Eval(Container.DataItem, "motif1") %></td>
        </tr>
        <tr>
        <td>pointage 2</td>
       <td><%# DataBinder.Eval(Container.DataItem, "pointage2")%></td>
       <td><%# DataBinder.Eval(Container.DataItem, "motif2") %></td>
        </tr>
        <tr>
        <td>pointage 3</td>
        <td><%# DataBinder.Eval(Container.DataItem, "pointage3")%></td>
        <td><%# DataBinder.Eval(Container.DataItem, "motif3") %></td>
        </tr>
        <tr>
        <td>pointage 4</td>
        <td><%# DataBinder.Eval(Container.DataItem, "pointage4")%></td>
        <td><%# DataBinder.Eval(Container.DataItem, "motif4") %></td>
        </tr>
     
     
      </ItemTemplate>
     
          <SeparatorTemplate>
    <tr>
    <td colspan="3"><hr /></td>
    </tr>
    </SeparatorTemplate>
     
            <FooterTemplate>
            </table></center>
            </FooterTemplate>
     
           </asp:Repeater>

  4. #4
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    En fait tu voudrais que les cellules qui ne contiennent pas de valeurs soient cachées ? Je ne vois pas très bien ce que tu cherches à faire ...

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    je veux masquer la ligne lorsque pointage(i) motif(i) sont vides
    dans l'affichage
    ---------------------------
    date
    ---------------------------
    pointage 1 | hh:mn | motif1
    ---------------------------
    pointage 2 | hh:mn | motif2
    ---------------------------
    ect..

    quand il n'existe ni pointage ni motif je veux masquer toute la ligne

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    avec la methode ecrite ci dessus ça fonctionne mais j'ai plus la forme du tableau de plus ..par exp la cellule de pointage 2 et la cellule demotif 2 sont vides...je sais pas comment masquer aussi le header "pointage 2"

  7. #7
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Essaye quelque chose comme ça :

    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
     
    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" OnItemCommand="Repeater1_ItemCommand" OnItemDataBound="Repeater1_ItemDataBound">
     
            <HeaderTemplate>
     <center><table border="1" cellpadding="3" style="border-collapse:collapse" width="60%">
      <caption style="color:Fuchsia"><b>Liste de Pointage</b></caption>
                 <tr>
    <th align="center">Pointage</th>
    <th align="center">Heure</th>
    <th align="center">Motif</th>
               </tr>
     
           </HeaderTemplate>
     
     
            <ItemTemplate>           
            <tr>
            <td colspan='3'><center><%# DataBinder.Eval(Container.DataItem, "datePointage") %></center></td>
            </tr>
    <%#(Eval("pointage1").ToString()!="" && Eval("motif1").ToString()!="")?"<tr><td>pointage 1</td><td>"+Eval("pointage1").ToString()+"</td><td>"+Eval("motif1").ToString()+"</td></tr>":""%>
     
    <%#(Eval("pointage2").ToString()!="" && Eval("motif2").ToString()!="")?"<tr><td>pointage 2</td><td>"+Eval("pointage2").ToString()+"</td><td>"+Eval("motif2").ToString()+"</td></tr>":""%>
     
    <%#(Eval("pointage3").ToString()!="" && Eval("motif3").ToString()!="")?"<tr><td>pointage 3</td><td>"+Eval("pointage3").ToString()+"</td><td>"+Eval("motif3").ToString()+"</td></tr>":""%>
     
    <%#(Eval("pointage4").ToString()!="" && Eval("motif4").ToString()!="")?"<tr><td>pointage 4</td><td>"+Eval("pointage4").ToString()+"</td><td>"+Eval("motif4").ToString()+"</td></tr>":""%>
     
      </ItemTemplate>
     
          <SeparatorTemplate>
    <tr>
    <td colspan="3"><hr /></td>
    </tr>
    </SeparatorTemplate>
     
            <FooterTemplate>
            </table></center>
            </FooterTemplate>
     
           </asp:Repeater>

  8. #8
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    si je puis me permettre cette solution est un peu lourde.

    Il te suffit de declarer ta ligne, balise tr, en runat=server et d'y ajouter un visible=<%# Monbooleen%>.

  9. #9
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Citation Envoyé par Arthis Voir le message
    si je puis me permettre cette solution est un peu lourde.

    Il te suffit de declarer ta ligne, balise tr, en runat=server et d'y ajouter un visible=<%# Monbooleen%>.
    Effectivement, j'avais juste fait au plus vite

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    voici ci joint une capture ecran de resultat, c'est vrai que lorque pointage et motif sont vide j'ai plus la cellule d'entete mais l'autre probleme persiste...y'a pas de grille

  11. #11
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    Si tu veux juste caché tes pointage 1à 1 il faut pas tester ton DataItem.
    En faisant e.Item.Visible tu cache tes 4 pointages

    D'ailleurs il arrive que ton dataItem soit Null????
    Je crois pas sinon tu ne pourrais rien evaluer.

    Tu parle de header pour le pointage 2 tu parle de la premiere colonne non?
    Parce que la tes headers sont pour tous les pointages.

    Si j'ai bien compris si au moins un des 4 pointages a Pointage et motif vide alors il faut cacher les 4 pointages en question.

    Si c'est ca je te suggere:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ( (Eval("pointage1") == null && Eval("motif1") == null) ||
         (Eval("pointage2") == null && Eval("motif2") == null) ||
         (Eval("pointage3") == null && Eval("motif3") == null) ||
          (Eval("pointage4") == null && Eval("motif4") == null) || )
    {
        e.Item.Visible = false;
     
    } 
     
    J'ai ecrit le code à la volé donc pas garantit que ca marche du premier coup ;)
    Ou une petite boucle des famille qui increment le nombre de pointage.

    Sinon si tu dois cacher un par un tes pointages joue sur le <tr> de tes ligne notament la propriete Visible ou le style du tr

    edt: Sinon je suis du même avis que Arthis et encore même pas besoin de le passer en runat = serveur. tr a une propriete visible en html ou utilise le style ou mêmem un Css.
    En bref faire chacun fais comme il prefere tous est possible!!.

  12. #12
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    desolé je trouve pas le fichier joint...y a un truc qui cloche...
    voila le resultat:


    01/01/ 2009
    pointage 108:00deplacement pointage 218:10deplacement
    04/01/ 2009
    pointage 108:34dep

  13. #13
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    pour l'histoire de visibilté j'ai tenté plusieurs trucs comme:

    Visible='<%# IsEmpty("pointage3") %>'
    Visible='<%# IsEmpty("pointage3") %>'
    Visible='<%# If(DBNull(Eval("pointage4")), "False", "True") %>'
    Visible='<%# IIf(DBNull(Eval("pointage4")), "False", "True") %>'


    mais ça marche pas

  14. #14
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    je vous comprends pas tres bien gyzmau..vous entendez dire avec item une ligne??? un item c'est pas une cellule du repeater???

  15. #15
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    Attention le repeater n'est pas un tableau.

    Il est même non typé.
    Un item n'est ni une ligne ni une cellule il est ce que l'on veux bien qu'il soit (<- je l'aime bien celle la lol)
    Un item correspond a tous ce qu'il y a dans l'ItemTemplate.

    Donc en l'occurence pour vous tous vos pointage.

  16. #16
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    desolé je me suis rendue compte apres l'envoi de reponse j'aurais du ecrire cellule de tableau
    mais pourquoi la grille disparaisse????

  17. #17
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Dans ton deuxieme psot ton item etait tout ca :

    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
    <ItemTemplate>           
            <tr>
            <td colspan='3'><center><%# DataBinder.Eval(Container.DataItem, "datePointage") %></center></td>
            </tr>     
         <tr> 
         <td>pointage 1</td>  
        <td><%# DataBinder.Eval(Container.DataItem, "pointage1") %></td>
        <td><%# DataBinder.Eval(Container.DataItem, "motif1") %></td>
        </tr>
        <tr>
        <td>pointage 2</td>
       <td><%# DataBinder.Eval(Container.DataItem, "pointage2")%></td>
       <td><%# DataBinder.Eval(Container.DataItem, "motif2") %></td>
        </tr>
        <tr>
        <td>pointage 3</td>
        <td><%# DataBinder.Eval(Container.DataItem, "pointage3")%></td>
        <td><%# DataBinder.Eval(Container.DataItem, "motif3") %></td>
        </tr>
        <tr>
        <td>pointage 4</td>
        <td><%# DataBinder.Eval(Container.DataItem, "pointage4")%></td>
        <td><%# DataBinder.Eval(Container.DataItem, "motif4") %></td>
        </tr>
     
     
      </ItemTemplate>
    Ce que gyzmau te propose c'est de cacher l'ensemble des 4 lignes d'un coup.

    A toi de voir ce que tu souhaites reellement faire... tu peux les cacher ligne par ligne (par pointage i) ou carrément tout cacher pour cet item.

    @gyzmau : je prefere jouer avec le runat=server car cela permet de ne pas envoyer l'html au client. Je trouve cela plus propre. Mais encore une fois, tout est possible comme tu el dis, cela depend de ton humeur , et des contraintes qui s'exerce sur ta personne et sur ta page.. !

  18. #18
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2008
    Messages : 233
    Par défaut
    je veux les cacher ligne par ligne c'est a dire ( entete pointage i motif i)
    (car en realite j'ai plus que 4 pointages j'ai mis ' pour le test )
    donc je dois mettre ces trois element dans une meme item template??

  19. #19
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    Edit :
    Voila un exemple dans un repeater ou je cache une div:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <asp:Repeater ID="SousSecteurRepeater" runat="server" DataSourceID="SecteurGetAll" >
    <ItemTemplate>
    <div style=<%# Container.ItemIndex > 0 ? "display:none" : "display:block"%>>
    toto
    <div>
    </ItemTemplate>
    </asp:Repeater>
    Là je pour le coup je joue sur le style pour une histoire de javascript mais c'est possible de joué de la même manière sur la propriété Visible de l'élément (div pour moi tr pour vous) en le passant en runat="server" et avec true ou false

    edit:
    aller soyons pas flemmard:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <asp:Repeater ID="SousSecteurRepeater" runat="server" DataSourceID="SecteurGetAll" >
    <ItemTemplate>
    <div Id="item" runat="server" Visible=<%# Container.ItemIndex > 0 ? false : true%>>
    toto
    <div>
    </ItemTemplate>
    </asp:Repeater>
    Pas testé par contre, peut etre passer les valeur true ou false en string, m'en rappel plus pour le coup.

    @Arthis: j'aime beaucoup: des contraintes qui s'exerce sur ta personne. excellent

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

Discussions similaires

  1. Masquer un champ vide dans un formulaire access
    Par anassyto dans le forum IHM
    Réponses: 2
    Dernier message: 25/06/2013, 16h24
  2. [MySQL] remplir les champs vides
    Par marsya dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/09/2006, 16h43
  3. Masquer les champs d'un formulaire
    Par Yoshidu62 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/05/2006, 10h20
  4. LIKE et les champs vide
    Par XioN dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/08/2004, 16h24
  5. tri avec les champs vides en dernier
    Par r-zo dans le forum Requêtes
    Réponses: 11
    Dernier message: 03/09/2003, 13h40

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