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

Tapestry Java Discussion :

Faire un tableau a nombre de colonnes variables


Sujet :

Tapestry Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2009
    Messages : 238
    Points : 183
    Points
    183
    Par défaut Faire un tableau a nombre de colonnes variables
    Bonjour,

    En ce moment je cherche à afficher une liste d'objets sur ma page html dans un tableau.

    Problème je n'arrive à afficher ce tableau que sur une seule ligne, ce qui n'est évidement pas des masses pratique lorsque la liste contient plusieurs centaines d'objets...

    Après moultes recherches sur le sujet je ne suis pas arrivé à ce que je veut...

    Voici ce que j'ai tenté pour le moment :

    Version "originale" qui n'affiche qu'une seule ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <table id="corps" align="center" border="0" cellpadding="5" cellspacing="1">
    		  	<div t:type="loop" t:source="borneList" t:value="bornes">
     
    		  		<TD id="Liste" style="background-color: ${getBorneState()}">
    		  			<t:pagelink page="borne/BorneDetails" context="[bornes.id.idBorne, bornes.id.idAo]">
    		  			${bornes.nomBorne}<br/>
    		  			borne num : ${bornes.id.idBorne}</t:pagelink>
    		  		</TD>
     
    		  	</div>
     
    		</table>
    Deuxième version avec l'utilisation de switchs (j'utilise un compteur dans la fonction getBorneState() pour compter le nombre de colonnes :

    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
    <table id="corps" align="center" border="0" cellpadding="5" cellspacing="1">
    		  	<div t:type="loop" t:source="borneList" t:value="bornes">
    		  		 <t:block t:id="sautLigne">
    		            <TR>
    		        </t:block>
    				 <t:block t:id="pasSautLigne">
    		        </t:block>
    		  		<TD id="Liste" style="background-color: ${getBorneState()}">
    		  			<t:pagelink page="borne/BorneDetails" context="[bornes.id.idBorne, bornes.id.idAo]">
    		  			${bornes.nomBorne}<br/>
    		  			borne num : ${bornes.id.idBorne}</t:pagelink>
    		  		</TD>
    		  		<t:block t:id="sautLigne">
    		            </TR>
    		        </t:block>
    				 <t:block t:id="pasSautLigne">
    		        </t:block>
    		  	</div>
     
    		</table>
    Mais cette version me sort une erreur à l'exécution car avec les balises <TR> qui attendent une balise </TR> à l'intérieur de mon Block...

    Si quelqu'un aurait une idée de comment procéder je suis tout ouïe... n'hésitez pas à me demander des précision si cela ne vous parait pas assez clair

    Merci d'avance!!!

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 28
    Points : 36
    Points
    36
    Par défaut
    Salut,
    Petite question pourquoi tu ne passes pas un grid? Aprés tu alimentes tes cases avec des fonctions et pour la couleur de ton tableau tu peux utiliser de la css.

    pour ton code je ne vois pas apparaitre les <TR> </TR>, c'est peut étre ta source d'erreur.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2009
    Messages : 238
    Points : 183
    Points
    183
    Par défaut
    yop encore toi? a croire que l'on est que deux sur cette partie du forum ^^

    Pour ce qui est du grid j'ai regarder rapidement sur google mais pas moyen de trouver d'info dessus... Pourrais tu être plus précis?

    Pour ce qui est des balises <TR> effectivement je n'en avais pas mis dans le premier code, je pensais qu'en définissant la largeur de ma page dans mon css le retour à la ligne se ferais automatiquement mais apparemment non... C'est pour ça que j'ai essayé dans mon deuxième exemple de code de les rajouter avec mes switch histoire de les avoir tout les X occurrences de la liste, mais peine perdue ^^

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 28
    Points : 36
    Points
    36
    Par défaut
    Yep, encore moi j'ai ma résidence secondaire ici
    Je suis pas sure de bien bien comprendre ton besoin, quand tu parles de colonnes variables, tu veux :

    1) tableau
    1er ligne 2 colonnes
    2eme ligne 3 colonnes
    3eme ligne 5 colonnes

    2) mettre un nombre de colonne variable de colonne, mais aprés les colonnes restent les memes avec les itérations

    3) others

    Reponds par 1, 2 ou 3

    Sinon pour le grid je t'enverrai tes exemples as soon as possible

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2009
    Messages : 238
    Points : 183
    Points
    183
    Par défaut
    Humm... je me rend compte que je me suis mal expliqué, donc 3

    En fait je me rend compte que je ne veut pas un nombre de colonne variable mais plutôt un nombre de colonne fixe!!!

    Exemple : J'ai une liste de 10 éléments, et je choisi d'avoir un tableau de 7 colonnes max de large. Le tableau généré par la liste devra alors avoir une première ligne de 7 colonnes puis une deuxième de 3 colonnes... En fait c'est plutôt le nombre de lignes qui doit être variable....

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2009
    Messages : 238
    Points : 183
    Points
    183
    Par défaut
    Petit up, pas de réponse?

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Et si tu essayes quelque chose comme ça ?

    Tu aura une methode "isSautLigne" qui retourne "true" ou "false" suivant que tu veux un saut de ligne ou pas.

    Et selon les cas, tu crée un tr avant d'afficher ton block td. On utilise alors delegate vers un block afin d'éviter de répéter le même code deux fois, une fois dans le if et dans le else.

    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
    <table id="corps" align="center" border="0" cellpadding="5" cellspacing="1">
    <t:loop t:source="borneList" t:value="bornes">
    <t:if t:test="sautLigne">
      <tr>
         <t:delegate t:to="blockLigne">
      </tr>
      <p:else>
         <t:deletate t:to="blockLigne">
      </p:else>
    </t:if>
    <t:loop>
    </table>
     
    <t:block t:id="blockLigne">
      <TD id="Liste" style="background-color: ${getBorneState()}">
          <t:pagelink page="borne/BorneDetails" context="[bornes.id.idBorne, bornes.id.idAo]">
    		  			${bornes.nomBorne}<br/>
    		  			borne num : ${bornes.id.idBorne}
          </t:pagelink>
      </TD>
    </t:block>
    (code écrit à l'arrache, ça marchera pas forcement du premier coup )

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2009
    Messages : 238
    Points : 183
    Points
    183
    Par défaut
    Salut et merci de ta réponse!!!

    Par contre tapestry ne connait apparemment pas le <t:else>... a moins que tu n'ais pas fait de faute de frappes et que ce soit bien <p:else>, mais tapestry ne le connait pas non plus ^^ Mais je sens que je touche au but, plus que ce petit problème à régler et ça va marcher ça va marcher!!!!! (priez avec moi mes frères!!!)

    edit : Bon après quelques recherche via mon amis google il apparait que la syntaxe que tu à donné est pour tapestry 5.1, hors je suis en 5.0, dans ce cas la bonne syntaxe est :

    <t:parameter name="else">

    Problème : Maintenant la page ne m'affiche carrément plus du tout ma liste de bornes ^^

    voici le code concerné :

    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
            <table id="corps" align="center" border="0" cellpadding="5" cellspacing="1">
            <t:loop t:source="borneList" t:value="bornes">
            <t:if t:test="sautLigne">
              <tr>
                 <t:delegate t:to="blockLigne">
                 </t:delegate>
              </tr>
              <t:parameter name="else">
                 <t:delegate t:to="blockLigne">
                 </t:delegate>
              </t:parameter>
            </t:if>
            </t:loop>
            </table>
     
            <t:block t:id="blockLigne">
              <TD id="Liste" style="background-color: ${getBorneState()}">
                  <t:pagelink page="borne/BorneDetails" context="[bornes.id.idBorne, bornes.id.idAo]">
                                  ${bornes.nomBorne}<br/>
                                  borne num : ${bornes.id.idBorne}
                  </t:pagelink>
              </TD>
            </t:block>

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2009
    Messages : 238
    Points : 183
    Points
    183
    Par défaut
    Reuhh

    bon problème résolue!! en fait pour le <p:else> il fallait juste rajouter le namespace. Et merci de ta solution, après quelques petites modifs j'ai obtenu ce que je voulais. Voici le code si jamais quelqu'un rencontre le même problème :

    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
    <table id="corps" align="center" border="0" cellpadding="5" cellspacing="1">
            <t:loop t:source="borneList" t:value="bornes">
            <t:if t:test="sautLigne">
              <tr>
              </tr>
              <t:delegate t:to="ligne">
                 </t:delegate>
              <p:else>
                 <t:delegate t:to="ligne">
                 </t:delegate>
              </p:else>
            </t:if>
            </t:loop>
            </table>
     
            <t:block t:id="ligne">
              <TD id="Liste" style="background-color: ${getBorneState()}">
                  <t:pagelink page="borne/BorneDetails" context="[bornes.id.idBorne, bornes.id.idAo]">
                                  ${bornes.nomBorne}<br/>
                                  borne num : ${bornes.id.idBorne}
                  </t:pagelink>
              </TD>
            </t:block>
    Merci à tous les deux!!!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/03/2014, 00h09
  2. BULK INSERT et nombre de colonnes variable
    Par hannii dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 20/07/2009, 20h02
  3. Tableau avec un nombre de colonne variable
    Par HoB dans le forum VBScript
    Réponses: 12
    Dernier message: 17/01/2008, 11h06
  4. SELECT avec un nombre de colonnes variable
    Par sorcer1 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 24/09/2007, 21h58
  5. [Etat]Nombre de colonnes variables dans un état
    Par milou161185 dans le forum IHM
    Réponses: 15
    Dernier message: 27/03/2007, 16h39

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