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

Struts 1 Java Discussion :

Tableau paginé + gestion cases à cocher


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Par défaut Tableau paginé + gestion cases à cocher
    Bonjour,
    j'ai une page de recherche qui affiche un tableau. Chaque ligne peut être coché/décoché par une case à cocher. Et une case à cocher générale permet de tout cocher/tout décocher en haut du tableau.
    En plus de ça, j'ai de la pagination. Mon souci est que si je change de page et que je reviens, mes cases à cocher sont réinitialiser à vide. J'ai besoin de récupérer la totalité des cases à cocher sur toutes les pages et je patauge!!!!
    Voici le code de ma jsp:
    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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
    <table width="100%">
    	<tr>
    		<td><h1><bean:message bundle="application" key="libelle.resultat"/></h1></td>
    	</tr>
    	<tr>
    		<td><hr></td>
    	</tr>
    </table>
    </td></tr>
    <tr>
    			<td class=nav>
    			<%
     
    						java.util.List list = form.getListFiches();
    						final int pageNumber = Integer.parseInt(form.getPageNumber());
    						final int ficheByPage = form.getFichesByPage();
    						final int minFiche = (pageNumber - 1) * ficheByPage;
    						final int maxFiche = Math.min(pageNumber * ficheByPage, list.size());
    						final int sizelistFiches = form.getListFiches().size();
    						final int fichesByPage = form.getFichesByPage();
    						final int pageMax;
     
    						if ((float) sizelistFiches / fichesByPage - ((int) (sizelistFiches / fichesByPage)) > 0) {
    							pageMax = sizelistFiches / fichesByPage + 1;
    						} else {
    							pageMax = sizelistFiches / fichesByPage;
    						}
     
    						final int currentPage = Integer.parseInt(form.getPageNumber());
    					%>
    					<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center summary="Zone de navigation / pagination de la liste" border=0>
    						<TBODY>
    							<TR>
    								<TD class=navEnrNo>Contact<%=(minFiche + 1 != maxFiche) ? "s" : ""%>
    								<%=minFiche + 1%> à <%=maxFiche%> sur <%=sizelistFiches%> trouvé<%=(sizelistFiches > 1) ? "s" : ""%>
    								</TD>
    								<TD class=navPageNo>Page<%=(pageMax > 1) ? "s" : ""%> : 
    								<%		for (int j = 1; j <= pageMax; j++) 
    										{
    											if (j != currentPage) {
    												out.println("<a href=\"javascript:showPage(" + j + ")\">"+ j + "</a>");
    											}
    											else 
    											{
    												out.println(j);
    											}
    										} /* for j */
    								%>
    								</TD>
    							</TR>
    						</TBODY>
    					</TABLE>
                </td>
    		</tr>
    <tr><td>
    <table width="100%" align="left" cellspacing="0">
    	<tr>
    		<th class="titre" width="5%"><input type="checkbox" name="idFicheAllAM" value="0" onclick="setUnset(this)"/></th>
    		<th class="titre" width="15%"><bean:message bundle="application" key="libelle.personne.nom"/></th>
    		<th class="titre" width="15%"><bean:message bundle="application" key="libelle.personne.prenom"/></th>
    		<th class="titre" width="15%"><bean:message bundle="application" key="libelle.organisme"/></th>
    		<th class="titre" width="15%"><bean:message bundle="application" key="libelle.coord.tel"/></th>
    		<th class="titre" width="15%"><bean:message bundle="application" key="libelle.coord.fax"/></th>
    		<th class="titre" width="20%"><bean:message bundle="application" key="libelle.coord.mail"/></th>
    	</tr>
    	<tr>
    		<th class="titre"></th>
    		<th class="titre"><a href="javascript:orderListFiches('ctcNom', 'asc')">
    			<IMG height=6 alt="Tri croissant" src="<%=request.getContextPath()%>/images/tri_croissant.gif" width=12 border=0></a>
    			<a href="javascript:orderListFiches('ctcNom', 'desc')">
    			<IMG height=6 alt="Tri croissant" src="<%=request.getContextPath()%>/images/tri_decroissant.gif" width=12 border=0></a>
    		</th>
    		<th class="titre"><a href="javascript:orderListFiches('ctcPrenom', 'asc')">
    		<IMG height=6 alt="Tri croissant" src="<%=request.getContextPath()%>/images/tri_croissant.gif" width=12 border=0></a>
    		<a href="javascript:orderListFiches('ctcPrenom', 'desc')">
    			<IMG height=6 alt="Tri croissant" src="<%=request.getContextPath()%>/images/tri_decroissant.gif" width=12 border=0></a>
    		</th>
    		<th class="titre"><a href="javascript:orderListFiches('orgNom', 'asc')">
    		<IMG height=6 alt="Tri croissant" src="<%=request.getContextPath()%>/images/tri_croissant.gif" width=12 border=0></a>
    		<a href="javascript:orderListFiches('orgNom', 'desc')">
    			<IMG height=6 alt="Tri croissant" src="<%=request.getContextPath()%>/images/tri_decroissant.gif" width=12 border=0></a>
    		</th>
    		<th class="titre"><a href="javascript:orderListFiches('ctcTelDirect', 'asc')">
    		<IMG height=6 alt="Tri croissant" src="<%=request.getContextPath()%>/images/tri_croissant.gif" width=12 border=0></a>
    		<a href="javascript:orderListFiches('ctcTelDirect', 'desc')">
    			<IMG height=6 alt="Tri croissant" src="<%=request.getContextPath()%>/images/tri_decroissant.gif" width=12 border=0></a>
    		</th>
    		<th class="titre"><a href="javascript:orderListFiches('ctcTelecopie', 'asc')">
    		<IMG height=6 alt="Tri croissant" src="<%=request.getContextPath()%>/images/tri_croissant.gif" width=12 border=0></a>
    		<a href="javascript:orderListFiches('ctcTelecopie', 'desc')">
    			<IMG height=6 alt="Tri croissant" src="<%=request.getContextPath()%>/images/tri_decroissant.gif" width=12 border=0></a>
    		</th>
    		<th class="titre"><a href="javascript:orderListFiches('ctcMailGene', 'asc')">
    		<IMG height=6 alt="Tri croissant" src="<%=request.getContextPath()%>/images/tri_croissant.gif" width=12 border=0></a>
    		<a href="javascript:orderListFiches('ctcMailGene', 'desc')">
    			<IMG height=6 alt="Tri croissant" src="<%=request.getContextPath()%>/images/tri_decroissant.gif" width=12 border=0></a>
    		</th>
    	</tr>
    						<%
    								for (int j = minFiche; j < maxFiche; j++) 
    								{
    									FicheComplete fiche = (FicheComplete) list.get(j);
     
    						%>
     
    		<tr>
    			<td class="resultat">
    			<input type="checkbox" name="idFicheAM" value="<%=fiche.getFicId()%>" /></td>
    			<td class="resultat"><%=fiche.getCtcNom()%></td>
    			<td class="resultat"><%=fiche.getCtcPrenom()%></td>
    			<td class="resultat"><%=fiche.getOrgNom()%></td>
    			<td class="resultat"><%=fiche.getCtcTelDirect()%></td>
    			<td class="resultat"><%=fiche.getCtcTelecopie()%></td>	
    			<td class="resultat"><%=fiche.getCtcMailGene()%></td>	
    		</tr>
    						<%
    						} /* for j */
    						%>
    	</table>
    Et voici comment je récupère mes cases à cocher dans mon action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] idSelectionnes = request.getParameterValues("idFicheAM");
    ça marche très bien si je ne change pas de page bien sûr.
    Merci par avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 78
    Par défaut
    Salut désolé, mais je n'ai pas le temps de regarder dans le détail ton code pour l'instant...
    Au cas où, est-ce que tu as pensé à utiliser un scope session pour ton formulaire?
    (je ne sais pas si ça correspond à ton exmple ou non, mais ça peut peut-être t'avancer)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 91
    Par défaut
    Si ton formulaire est en session je pense qu ça doit fonctionner.

    Par contre si ton formulaire est dans la request, tu as un problèmecar une fois que tu es sur ton client, ton objet form est "mort" et donc tu as perdu ce que tu avait coché.

    ll faut trouver un moyen de stocher les données (case cochée de chaque page).

    Soit tu stocke coté serveur les données postés pour chaque pages.

    Soit (c'est la solution que j'utilise) tu stocke les id(valeur postée quand la case est cochée) des cases à cocher dans un champs caché (sous forme de string avec un sepérateur). Tu poste ce champs de page en page, de cette manière tu est capable de connaitre à tous instants les cases qui sont cochées, même celles qui ne sont pas sur la page courante.

    Bon courage

    Loïc

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Par défaut
    Mon formulaire est effectivement en session, j'ai donc crée un tableau d'entier prenant 0 ou 1 en fonction du checked/unchecked et j'appelle une fonction sur le onclick de chaque checkbox et une fonction différente sur le onclick de la checkbox générale de chaque page.
    J'ai donc deux tableaux:
    checkListPages et checkListFiches qui contiennent 0 ou 1 et ça marche nickel comme ça.
    Merci pour vos conseils.

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

Discussions similaires

  1. Comment colorer une ligne d'un tableau avec une case à cocher ?
    Par Gdal dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/08/2011, 11h11
  2. Gestion case à cocher
    Par mickael033 dans le forum Langage
    Réponses: 3
    Dernier message: 06/07/2009, 01h44
  3. [MySQL] Afficher les valeurs d'un tableau pour des cases à cocher
    Par tiesto95 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/12/2008, 16h45
  4. Un tableau pour chaque case à cocher
    Par The Molo dans le forum Langage
    Réponses: 3
    Dernier message: 18/08/2008, 13h49
  5. [MySQL] Creer un formulaire avec un tableau et des cases à cocher ??
    Par shawn12 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 04/04/2006, 10h23

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