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

Servlets/JSP Java Discussion :

Bug dans select all/none


Sujet :

Servlets/JSP Java

  1. #21
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par stof Voir le message
    Bah...quand on modifie l'écran, le code source n'est pas sensé changer aussi...je dis peut-être une bêtise là...
    Je crois bien que oui

    Je regarde le code et je te tiens au courant...

  2. #22
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Tu t'es trompé, la méthode getCheckBoxValue EST la fonction de comparaison.
    Elle reçoit donc 2 arguments, un objet1 et un objet2 correspondant à 2 lignes à trier.
    Elle devrait donc être du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function getCheckBoxValue(o1, o2)
    {
       if (o1 < o2) return -1;
       if (o1 > o2) return 1;
       return 0;
    }
    Je te laisse adapter...

  3. #23
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    C'est pas ça, ça marche moins bien encore.
    PS : je me demande ce que veut dire o1<o2 pour des checkbox

  4. #24
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Damned, j'ai raté un truc... désolé

    Peux-tu essayer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function getCheckBoxValue (oRow, nColumn) 
    {
        if (oRow.cells[nColumn].firstChild.checked)
        {
            return parseInt("0");
        }
        return parseInt("1");
    }

  5. #25
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Eh non, pareil que ce que j'avais : ça trie correctement les cases déjà cochées mais si on en ajoute une et qu'on trie de nouveau, la nouvelle case disparaît

  6. #26
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Ça voudrait dire que la bibliothèque ne se base pas sur le tableau html mais sur une "copie"...
    Pourrais-tu montrer la page dans son ensemble ?

  7. #27
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    J'ai pas suivi l'idée mais je comprendrais peut-être à la prochaine étape.

    Voilà toute la page 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
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html-el" prefix="html-el"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean-el" prefix="bean-el"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core"             prefix="c"%>
     
     
    <html-el:form action="/myAction.do">
    <html-el:hidden property="reqCode" value="validItem" styleId="reqCode"/>
     
    <c:if test="${!empty myActionForm.itemMap}">
     
    	<div class="tableau">
     
       		<table width="100%" border="0" cellspacing="0" cellpadding="0" class="margezero" id="titre">
        		<tr>
          			<th align="left">My Item list</th>
          			<th align="right">Select All/None
    				<input type='checkbox' name='checkall' onClick="this.value=check(this.form.selectedItem)"></th>
        		</tr>    	
      		</table>
     
    	    <table width="100%" border="0" cellspacing="0" cellpadding="0" class="margezero" id="myItems">
    	    		<thead>
    					<tr>
    						<th><bean-el:message key="item.id"/></th>
    						<th><bean-el:message key="item.name"/></th>
    						<th>&nbsp;</th>
    					</tr>
    				</thead>
    				<c:forEach var="itemMap" items="${myActionForm.itemMap}">
    						<tr>
    							<td>${itemMap.key}</font></td>
    							<c:set var="ici">true</c:set>
    							<c:forEach var="item" items="${myActionForm.selectedItem}">
    								<c:if test="${item eq itemMap.key}">
    									<td><a href="myAction.do?reqCode=readItemFile&itemId=${itemMap.key}" onclick="submit();">${itemMap.value.name}</a></td>
    									<td align="center"><input type="checkbox" name="selectedItem" value="${itemMap.key}" checked="checked"/></td>
    									<c:set var="ici">false</c:set>
    								</c:if>
    							</c:forEach>							
    							<c:if test="${ici eq true}">
    								<td>${itemMap.value.name}</td>
    								<td align="center"><input type="checkbox" name="selectedItem" value="${itemMap.key}"/></td>
    							</c:if>
    						</tr>
    				</c:forEach>
     
    		</table>
    		<table width="100%" border="0" cellspacing="0" cellpadding="0" class="margezero"  id="bouton">    	
    		<tr>
    			<td colspan="3" align="center">
    				<html-el:submit onmouseover="this.className='btn btnhov'" 
    										onmouseout="this.className='btn'" 
    						styleClass="btn">
    					<bean-el:message key="label.validate" />
    				</html-el:submit>
    			</td>
    		</tr>
    		</table>	
    	</div>
     
    	<script type="text/javascript">
                    //<![CDATA[                     
                    var st = new SortableTable( document.getElementById("myItems"), ["Number", "String", "CheckBox"] );
                                    
                    function getCheckBoxValue (oRow, nColumn) {
                            return oRow.cells[nColumn].firstChild.checked ? 0 : 1;
                    };      
                    st.addSortType("CheckBox", null, null, getCheckBoxValue);
                    //]]>
            </script>
     
    </c:if>

  8. #28
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Donc, le comportement se précise...
    Tu ne charges la table qu'à l'initialisation de la page alors qu'il faudrait le faire à chaque fois que tu cliques pour trier.
    J'ai vu dans le code de la bibliothèque que tu avais un setTable(...), je te suggère donc d'essayer comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    <table width="100%" border="0" cellspacing="0" cellpadding="0" class="margezero" id="myItems" onclick="st.setTable(this)">
    ...
    ou si tu préfères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    <table width="100%" border="0" cellspacing="0" cellpadding="0"  class="margezero" id="myItems" onclick="st.setTable(document.getElementById('myItems')">
    ...
    Ça devrait régler ton problème

  9. #29
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    T'es sûrement pas loin...et moi pas loin de comprendre :

    J'ai d'abord recopié bêtement onclick="st.setTable(this)"
    Comme ça marche pas, je me suis dit : mais ça veut dire quoi de mettre "st" ici, le code html ne sait pas ce que c'est.

    Alors j'ai fait :
    onclick="setTableOnClick(this)"
    où j'ai la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function setTableOnClick(param){
    st.setTable(param);
    };
    Mais ça ne résoud toujours pas le problème

  10. #30
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Normalement, il devrait trouver st puisqu'à la fin de ta page tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script type="text/javascript">
        //<![CDATA[            
        var st = new SortableTable( document.getElementById("myItems"), ["Number", "String", "CheckBox"] );
                
        function getCheckBoxValue (oRow, nColumn) {
            return oRow.cells[nColumn].firstChild.checked ? 0 : 1;
        };    
        st.addSortType("CheckBox", null, null, getCheckBoxValue);
        //]]>
    </script>

  11. #31
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Peut-être oui (j'aurais pensé que st était locale au javascript).
    Mais quoi qu'il en soit, l'ajout de onclick="st.setTable(this)" ne corrige toujours pas le fait que les cases cochées disparaissent après avoir cliqué sur le tri de la colonne.

  12. #32
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    C'est quelle bibliothèque au juste ?

  13. #33
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    C'est quelle bibliothèque au juste ?
    Heu... laquelle?
    Si c'est à propos de Sortable, ça vient d'ici

  14. #34
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Bon, ce n'est pas la bibliothèque, je viens de la tester avec ce qui suit et ça fonctionne très bien, même pas besoin du setTable(...).
    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
     
    <html>
    <head>
    <script src="js/sortabletable.js"></script>
     
    <link type="text/css" rel="StyleSheet" href="css/sortabletable.css" />
     
    <style>
    .header{
        background:#505050;
        color:#ffffff;
    }
    </style>
     
    <script>
    var st = null;
     
    function pageLoaded()
    {
        st = new SortableTable(document.getElementById("tbl"), ["Checkbox", "String"]);
        st.addSortType("Checkbox", null, null, getCheckBoxValue);
    }
     
    function getCheckBoxValue (oRow, nColumn) 
    {
    //    alert(oRow.cells[nColumn].firstChild.checked);
        if (oRow.cells[nColumn].firstChild.checked)
        {
            return parseInt("0");
        }
        return parseInt("1");
    }
    </script>
     
    </head>
    <body onload="pageLoaded()"> 
     
    <form>
     
    <table id="tbl" border="1">
    <thead>
    <tr>
    <td class="header">Col 1</td>
    <td class="header">Col 2</td>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td><input type="checkbox" name="selectedItem" value="1"/></td>
        <td>ligne 1</td>
    </tr>
    <tr>
        <td><input type="checkbox" name="selectedItem" value="2"/></td>
        <td>ligne 2</td>
    </tr>
    <tr>
        <td><input type="checkbox" name="selectedItem" value="3"/></td>
        <td>ligne 3</td>
    </tr>
    <tr>
        <td><input type="checkbox" name="selectedItem" value="4"/></td>
        <td>ligne 4</td>
    </tr>
    </tbody>
    </table>
     
    <input id="btn" type="submit" value="Essaye encore"/>
    </form>
     
    </body>
    </html>
    Par contre, ça m'a permis de voir un peu son fonctionnement.
    Il ne faut pas se tromper dans le type des colonnes ni leur ordre...

  15. #35
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Oui, mais ça me dit pas ce qui cloche chez moi :
    J'affiche bien une ligne de {Integer, String, Checkbox} donc ce n'est pas une question d'ordre dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var st = new SortableTable( document.getElementById("items"), ["Number", "String", "CheckBox"] );

  16. #36
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Effectivement, mais tu ne fournis qu'un code partiel, il manque toute la partie "template".
    A la limite, post le code à partir de l'option "source" sur le browser, là, on verra tout.
    Si tu as Firefox, le plugin WebDeveloper a une option permettant de récupérer le code après interprétation d'éventuels script, encore mieux...

  17. #37
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Pourtant j'ai posté la jsp, la librairie de tri, et il y a juste à savoir que dans mon ActionForm j'ai une liste d'Integer itemList.

    Bon, je jette l'éponge...
    Merci quand-même.

Discussions similaires

  1. [Dojo] Select All dans un Dojo enhancedGrid
    Par Knarf64 dans le forum Bibliothèques & Frameworks
    Réponses: 6
    Dernier message: 30/05/2011, 08h58
  2. Ajout de critères dans Select utilisé par xp_sendmail
    Par bd0606 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 28/05/2004, 17h02
  3. Bug dans les expressions régulières ?
    Par SergioF dans le forum Linux
    Réponses: 8
    Dernier message: 12/05/2004, 15h14
  4. [PROPERTIES] Bug dans java.util.Properties ?
    Par mathieu dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 28/04/2004, 15h11
  5. bug dans une base Access
    Par bizouard dans le forum Access
    Réponses: 5
    Dernier message: 29/12/2003, 12h41

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