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 :

Retourner l'index d'un élément de dataTable


Sujet :

JSF Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 137
    Points : 65
    Points
    65
    Par défaut Retourner l'index d'un élément de dataTable
    Bonsoir,

    Je suis en train d'effectuer un simple ajout dans dataTable.
    Je clique sur un lien qui va m'ajouter un enregistrement vide (index=0) au début de la liste.
    Quand j'ajoute, je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Service.ajoutmenu(getListmenus().get(0).getMenu(),getListmenus().get(0).getLibelle(),getListmenus().get(0).getMpere(), cod.toString());
    J'ai testé l'ajout d'un élément ça marchait mais juste sur la première page, quand je fais "suivant", le nouvel enregistrement n'est plus ajouté car l'index de la ligne n'est plus=0!!! Il m'affiche le dernier élément de la page précédente!!!



    et quand j'ajoute un nouvel élément:



    Ouf!!! ça m'énerve!!!

    Merci

  2. #2
    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
    Bonjour,
    Euh ... C'etait quoi le problème déjà ?
    Veux tu reformuler plus clairement s'il te plaît ? Je te ferais signaler qu'on n'a pas accès au code de ton projet, et donc Service.ajoutmenu(3Km d'arguments) ou encore le message d'erreur "Ce menu existe déjà" ne nous aident strictement en rien ...

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 137
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    En fait, J'ai un dataTable dans lequel je dois pouvoir ajouter un nouvel élément (ici, un nouveau menu).

    Pour ce faire, je dois d'abord ajouter une ligne vide dans dataTable (où je vais insérer le nouvel élément.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
               MenuAdmin menu=new MenuAdmin();
                 menu.setMenu("");
                 menu.setLibelle(""); 
                 menu.setMpere("");
                // int rowIndex = mydataTable.getRowIndex();
                listmenus.add(0,menu);
    Ceci ajoute un enregistrement vide (image 1).

    La 2ème étape consiste à ajouter le menu: s'il n'existe pas dans la table, il sera ajouté, sinon, on affiche "Ce menu existe déjà".

    J'appelle cette méthode pour faire l'insertion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ajoutmenu(getListmenus().get(0).getMenu, cod.toString());
    ***(getListmenus().get(0).getMenu :correspond au 1er élément de dataTable)
    ***cod.toString() (l'élément sélectionné dans selectOneListbox) qui correspond au code du menu ajouté.

    Le problème est que l'insertion ne se fait pas parceque l'ajout ne se fait pas dans l'enregistrement vide mais dans le premier élément existant de dataTable (ici, FOA0041-08). C'est pour cette raison qu'on affiche: Ce menu existe déjà.

    Je crois que je dois remplacer [getListmenus().get(int).getMenu] par [getListmenus().get(rowIndex).getMenu] mais je ne sais pas comment le faire.

    Merci

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Points : 228
    Points
    228
    Par défaut
    Moi je ferais comme ça :
    1 - Tu cliques sur le lien qui permet d'ajouter la ligne vide
    A ce moment le menu existe déjà puisque tu le crées. Tu as donc déjà le bean de type Menu à disposition. Tu le peuples avec des infos "vides" pour qu'il apparaisse vide à l'écran et tu l'ajoutes à la liste listmenus.
    2 - Tu saisis les valeurs dans les champs et tu soumets le formulaire. Normalement si tu as bien fait les choses ta liste listmenus a été peuplée en allant lire dans une table ou un truc du genre.
    Donc après la soumission si tout s'est bien passé (conversion, validation etc). Tu testes si le nouveau menu que tu viens de saisir existe déjà dans ta liste de référence (pas listmenus, mais bien celle qui a servi à peupler listmenus). Pour faire ce test, toi seul sais sur quels critères tu veux te baser (autrement dit, quelle est la clef primaire d'un Menu ?)
    Si ce nouveau menu n'est pas déjà présent dans ta liste de référence tu peux l'y ajouter.

    En fait je te conseille de dissocier le plus possible les données que tu présentes dans tes pages de tes données métier.
    En gros si tu veux créer un nouvel objet, tu en crées qui te sers à être présenté et seulement ensuite, si les critères sont remplis, tu en crées un que tu insères du coté métier.

    Mais pour conclure, ta présentation du problème est un peu confuse et de ce fait j'ai peut-être répondu à coté.
    Essaie d'abstraire un peu ton problème pour nous le décrire.

Discussions similaires

  1. Réponses: 15
    Dernier message: 05/10/2012, 19h08
  2. Index d'un élément d'un tableau de chaînes
    Par ChPr dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 17/05/2007, 15h54
  3. [VB6] Comment retourner l'index d'un item de combobox par son nom
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/08/2006, 22h30
  4. Réponses: 2
    Dernier message: 26/07/2006, 12h46
  5. Comment récupérer l'index du dernier élément inséré ?
    Par Didier100 dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/07/2004, 22h41

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