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 :

sort dans un dataTable


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut sort dans un dataTable
    Salut pour tous, j'ai un prblème lorsque je fait un sorting dans un colonne de mon dataTable,
    J'affiche dans l'écran une liste d'objet exemple un liste d'article,

    j'affiche une colonne à part non appartenant à liste des articles calculable d'une facon indépondante
    la méthode que j'ai trouvé pour faire ça c'est creer un tableau dont le size = size de la liste et je fait entrer dans le tableau le résulat claculé element par element de la liste;

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void initTab() {
    int size = articleList.size();
    articleTab = new String[size];
     
    for (int i = 0; i < size; i++) {
    StringBuffer name= new StringBuffer("article");
    name.append(" ");
    name.append(articleList.get(i).getNiveau());
    articleTab [i] = new String(name);
    		}
    	}
    cette méthode remplie un tableau de String que je veux afficher comme colonne dans la liste.

    et dans le date table je fait appel à ce tableau elemet par element:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <rich:column id="column1" sortBy="#{item.niveau}"
    style="text-align:left">
    	<f:facet name="header">
    	<h:panelGroup>
    <h:outputText value="#{i18n.listGammes_column_niveau}" />
    	</h:panelGroup>
    		</f:facet>
    	<h:outputText value="#{monBean.articleTab [index]}"></h:outputText>
    </rich:column>
    J'usqu'a maintenant c'est bon, chaque ligne d'article lui correspond son propre indice dans le tableau.

    Le problème maintenant est lorsque je fait un sort d'un colonne de la liste, par exemple sur l'id de l'article, les élement du tableau sont toujours fixent il ne change pas ( ne suivent pas le sorting), donc c'est une erreur puisque l'affichage est faux, l'indice du tableau ne correspond pas à l'element du dataTable,

    Est ce qu'il y a une solution à ce probléme ou bien une autre façon d'afficher cet colonne dans ma lite d'article dataTable,

    Merci d'avance.

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Je ne comprend pas ce que tu veux faire..mais ceci ne vas pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText value="#{monBean.articleTab [index]}"></h:outputText>
    tu n'itère pas sur la variable de table.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut
    Je vous remercie pour votre réponse Sniper37,
    Bon, je vais essayé de détaillé :
    J'ai une liste d'article, je l'affiche avec un dataTable, chaque colonne correspond un un attribut de l'objet article.
    Maintenant, je veux ajouter une nouvelle colonne qui dépends des attribut de la liste d'article, par exemple je calcule le TVA d'un article donnée, j'ai utilisé un tableau ou j'enregistre les tva claculé pour chaque article, puis je l'affiche (le tableau) indice par indice suivant le rowkey de dataTable index,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:outputText value="#{monBean.articleTab [index]}"></h:outputText> 
     
    //index =rowkey du dataTable article
    l'affichage est bien comme j'ai dit, chaque ligne de l'article correspond à son calcule de TVA dans le tableau.

    LE problème est lorsque je fait un tris sur les colonnes du dataTable (sort column), les ligne d'article sont trié mais le tableau de TVA reste inchagé ne suit pas le tris de dataTable:

    Ex : à l'affichage j'ai :

    Numero libelle TVA(valeur calculé)
    5---------a-----12
    3---------b------13
    1---------c------5

    //l'utilisateur fait un tris sur Numero : le dataTable de RichFaces permet ça
    // Résultat :

    Numero libelle TVA(valeur calculé)
    1--------c -----12
    3--------b------13
    5--------a-------5

    Les valeurs de tva ne change pas suivant le tris, c'est normale parce que il n'est pas liée à la liste.

    Est ce qu'il y a une solution pour régler ce problème ???

    Merci une autre fois.

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    tu peux calculer la colonne avec les expressions EL, ou ajouter à ton bean la colonne et qd tu calcule le résultat de la liste tu ajoute le calcul de la colonne..
    si ton bean vient direct de la base, tu peux faire un bean intermédiaire.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut
    Je vous remercie pour votre réponse,
    mais j'ai pas compris quelque choses :
    tu peux calculer la colonne avec les expressions EL,
    j'ai pas compris les expressions EL est ce que sont des expressions mathématique ??
    mois j'ai fait le tva à titre d'exemple, dont mon cas j'ai un traitement assez compliqué dans la colonne, donc je pense que c'est pas mon cas.
    ou ajouter à ton bean la colonne et qd tu calcule le résultat de la liste tu ajoute le calcul de la colonne..
    Comment j'ajoute un colonne sans mon bean??
    Et comment j'ajoute cette colonne dans ma liste ??

    Moi je remplis ma liste de la base de donnée, comment je peu ajouté une colonne ?

    si ton bean vient direct de la base, tu peux faire un bean intermédiaire.
    J'ai pas compris aussi ??

    Je pense que la deuxième solution est la bonne dans mon cas, comment je l'applique ??

    Merci.

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    les expressions EL c'est ce que tu utilise par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText value="#{bean.parameter}"/>
    tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText value="#{item.prix * 0.196}" />
    un bon tutoriel de adiGuba.

    Pour l'autre solution, au lieu d'utiliser ton bean de la base..tu peux utiliser un autre bean qui représente les valeurs de tes colonnes, et dans une méthode tu parse le bean de ta base en ce nouveau bean, tu peux y faire des conversions, des calculs ..

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Par défaut
    Merci bien Sniper37, j'ai essayé d'implémenter un bean intermédiaire pour afficher la liste, comme vous avez mentionné.
    Et ça marche

    Vous m'avez dit qu'il ne faut pas utilisé un tableau pour itérer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tu n'itère pas sur la variable de table.
    Mais dans certain cas je suis obligé d'utiliser les tableau, pour affiché des résultat et ça marche bien !!!

    Est ce que l'utilisation des tableau pour l'affichage est déconseillé ??

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/07/2006, 14h28
  2. [VB.NET] vérifier le format d'un champ dans un datatable
    Par HULK dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/10/2005, 16h13
  3. [C#] Modifier une valeur dans une DataTable
    Par Scorff dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/05/2005, 10h45
  4. [VB.NET] Suppression de ligne dans un DataTable
    Par seemax dans le forum Windows Forms
    Réponses: 7
    Dernier message: 06/05/2004, 14h19
  5. Réponses: 2
    Dernier message: 20/02/2004, 08h47

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