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

JSF Java Discussion :

DataTable - Ajout d'une colonne calculée


Sujet :

JSF Java

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 3
    Points : 4
    Points
    4
    Par défaut DataTable - Ajout d'une colonne calculée
    Bonjour,
    J'affiche le resultat d'un recordset dans une datatable. Jusque là, pas de problèmes.
    Par contre, comment puis je dans une colonne de ma datatable faire varier le texte de <h:outputText ...> en fonction de la comparaison de 2 autres valeurs données se trouvant dans des h:outputText ?



    le code JSP de data table

    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
    <h:dataTable id="stock" value="#{StockBean.table}" var="xstock" border="1" align="center" bgcolor="#c0c0c0" >
                        <h:column>
                            <f:facet name="header">
                                <f:verbatim>Type tooner</f:verbatim> </f:facet>
                            <h:outputText value="#{xstock.tsttyp}"/></h:column>
                        <h:column>
                            <f:facet name="header">
                                <f:verbatim>Qtt Tooner</f:verbatim> </f:facet>
                            <h:outputText value="#{xstock.tstqtt}" id="id1"/></h:column>
                        <h:column>
                            <f:facet name="header">
                                <f:verbatim>Qtt Drum</f:verbatim> </f:facet>
                            <h:outputText value="#{xstock.tstqtc}"/></h:column>
                        <h:column>
                            <f:facet name="header">
                                <f:verbatim>Seuil Tooner</f:verbatim> </f:facet>
                            <h:outputText value="#{xstock.tstseuil}" id="id2"/></h:column>
                        <h:column>
                            <f:facet name="header">
                                <f:verbatim>Seuil Drum</f:verbatim> </f:facet>
                            <h:outputText value="#{xstock.tstqtlv}"/></h:column>
                        <h:column>
                            <f:facet name="header">
                                <f:verbatim>Alerte</f:verbatim> </f:facet>
                            <h:outputText value=""/>
     
                        </h:column></h:dataTable>

    Le bean qui selectionne les valuers dans la DB

    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
    public Result getTable() throws NamingException{
            ResultSet rs = null;
            OpenConnection();
            String SQLtext;
            SQLtext = "Select tstid, tsttyp, tstqtt, tstqtc, tstseuil, tstqtlv from "+ getTablename();
            Statement statement = null;
            try {
                statement = conndb.createStatement();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                rs = statement.executeQuery(SQLtext);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
     
            return(ResultSupport.toResult(rs));
        }
    En pratique, je souhaite que la colonne Alerte affiche "Oui" si la Quantité est <= au seuil.

    Merci de votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Solution 1 -
    Tu peux ajouter un 3ème élément aux objets contenu dans ta collection.
    Cet objet contiendrai le résultat du calcul.
    Le calcul est fait au moment du remplissage de la collection

    Solution 2 -
    Deux composant dans la colonne
    outputText1 attribut rendered vaut true selon condition
    outputText2 attribut rendered vaut true selon condition inverse

  3. #3
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonsoir.

    Solution 3:
    L'opérateur terniaire (?:) très peu connu ... dommage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:outputText value="#{(xstock.tstqtt < xstock.tstseuil ? 'OUI' : 'NON')}"/>
    Bonne chance.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Effectivement, ta solution 3 est la meilleure je pense

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    bonjour,
    je profite de ce poste pour poser une petite question:
    il y a t-il un moyen d'afficher seulement les lignes qui contiennent 'OUI' dans
    le résultant de la comparaison ??

    merci

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Etant donné que dans dataTable tu définit des éléments par colonne et pas par ligne. Il vaut mieu le faire au moment de la récup des données.

    Après tu peux toujours faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value="#{(xstock.tstqtt < xstock.tstseuil )}"
    A tout tes éléments de chaque colonne, mais c'est moche, et aura des lignes vides je pense...

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/11/2013, 14h23
  2. Réponses: 3
    Dernier message: 24/08/2012, 14h51
  3. d'un fichier xml à des tables Access : ajout d'une colonne calculée
    Par scribreiz dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 16/10/2009, 11h48
  4. DataTable - Ajout d'une colonne calculée
    Par Ouggada dans le forum Windows Forms
    Réponses: 14
    Dernier message: 24/02/2009, 16h09

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