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

NetBeans Java Discussion :

[NetBeans] Problème pour récupérer les lignes sélectionnées d'une table


Sujet :

NetBeans Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 84
    Points
    84
    Par défaut [NetBeans] Problème pour récupérer les lignes sélectionnées d'une table
    Bonjour à tous,

    Dans une page JSP, j'ai une table avec une colonne checkbox qui me permet de sélectionner des lignes, et je voudrais en cliquant sur un bouton récupérer les lignes sélectionnées.
    J'ai lu différents tutoriaux sur le site de SUN, et j'en suis arrivé à produire le code suivant.

    Partie 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
     
    <ui:panelLayout binding="#{order_card_edit.lyp2}" id="lyp2" style="left: 0px; top: 462px; position: absolute; width: 100%; -rave-layout: grid">
                      <ui:table binding="#{order_card_edit.t1}" deselectMultipleButton="true" id="t1" lite="true" selectMultipleButton="true"
                          style="left: 1%; top: 65px; position: absolute" title="Détail des articles de la commande" width="98%">
                          <ui:tableRowGroup binding="#{order_card_edit.row1}" id="row1" rows="5" sourceData="#{order_card_edit.xtmp_orderDataProvider}" sourceVar="currentRow">
                              <ui:tableColumn align="center" binding="#{order_card_edit.col1}" id="col1" selectId="ck1" style="#{order_card_edit.selectedStyle}">
                                  <ui:checkbox binding="#{order_card_edit.ck1}" id="ck1" immediate="true" 
                                      onClick="document.getElementById("form1:t1").initAllRows();" selected="#{order_card_edit.selected}"/>
                              </ui:tableColumn>
                              <ui:tableColumn binding="#{order_card_edit.col2}" headerText="Ligne" id="col2" style="#{order_card_edit.selectedStyle}">
                                  <ui:staticText binding="#{order_card_edit.staticText1}" id="staticText1" text="#{currentRow.value['xtmp_order.LINE_NUMBER']}" style="width: 98%"/>
                              </ui:tableColumn>
                              <ui:tableColumn align="right" binding="#{order_card_edit.col3}" headerText="Qté." id="col3" style="#{order_card_edit.selectedStyle}">
                                  <ui:textField binding="#{order_card_edit.lv1}" id="lv1" style="text-align: right; width: 98%" styleClass="edit-box"
                                      text="#{currentRow.value['QTY']}" visible="#{order_card_edit.editMode}"/>
                                  <ui:label binding="#{order_card_edit.label2}" id="label2" rendered="#{!order_card_edit.editMode}" text="#{currentRow.value['QTY']}"/>
                              </ui:tableColumn>
                              <ui:tableColumn align="center" binding="#{order_card_edit.col12}" id="col12" style="#{order_card_edit.selectedStyle}" width="90">
                                  <ui:hyperlink action="#{order_card_edit.edit_line}" binding="#{order_card_edit.llnk1}" id="llnk1"
                                      rendered="#{!order_card_edit.editMode}" text="Modifier">
                                      <ui:image binding="#{order_card_edit.ic1}" height="22" id="ic1" url="/resources/edit2.png" width="22"/>
                                  </ui:hyperlink>
                                  <ui:hyperlink action="#{order_card_edit.ok_line}" binding="#{order_card_edit.llnk2}" id="llnk2" visible="#{order_card_edit.editMode}">
                                      <ui:image binding="#{order_card_edit.ic2}" height="22" hspace="5" id="ic2" url="/resources/ok2.png" vspace="1" width="22"/>
                                  </ui:hyperlink>
                                  <ui:hyperlink action="#{order_card_edit.cancel_line}" binding="#{order_card_edit.llnk3}" id="llnk3" visible="#{order_card_edit.editMode}">
                                      <ui:image binding="#{order_card_edit.ic3}" height="22" hspace="5" id="ic3" url="/resources/cancel2.png" width="22"/>
                                  </ui:hyperlink>
                              </ui:tableColumn>
                          </ui:tableRowGroup>
                      </ui:table>
                      <ui:hyperlink action="#{order_card_edit.del_action}" binding="#{order_card_edit.hlnk3}" id="hlnk3" immediate="true"
                          style="left: 648px; top: 0px; position: absolute; width: 166px" styleClass="icobuton">
                          <ui:staticText binding="#{order_card_edit.lbl23}" id="lbl23" styleClass="icobuton0" text="Supprimer ligne(s)"/>
                          <ui:image binding="#{order_card_edit.pic5}" height="32" id="pic5" url="/resources/trash.png" width="32"/>
                      </ui:hyperlink>
                      <ui:textField binding="#{order_card_edit.textField3}" id="textField3" style="width: 552px; left: 200px; top: 40px;"
                          styleClass="edit-box" text="#{order_card_edit.xtmp_orderDataProvider.value['xtmp_order.COMMENT']}" visible="false"/>
                      <ui:label binding="#{order_card_edit.label5}" id="label5" style="height: 24px; width: 176px; left: 24px; top: 40px;"
                          text="Commentaire de la ligne" visible="false"/>
                  </ui:panelLayout>
    Et voici la partie de mon fichier java :
    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
     
        private HashSet selectedRows = new HashSet();
     
        public boolean isSelected() {
           TableRowDataProvider rowData = (TableRowDataProvider) getBean("currentRow");
     
            if (rowData.getTableRow().equals(curr_row)){
                return true;
            }
            return false;
     
     
     
        }
     
        public void setSelected(boolean selected) {
            TableRowDataProvider rowData = (TableRowDataProvider)getBean("currentRow");
            RowKey rowKey = rowData.getTableRow();
            if (ck1.isChecked()) {
                selectedRows.add(rowKey);
            } else {
                selectedRows.remove(rowKey);
            }
        }
     
        public String getSelectedStyle(){
            TableRowDataProvider rowData = (TableRowDataProvider) getBean("currentRow");
            if (rowData.getTableRow().equals(curr_row)){
                return "background-color: rgb(204, 204, 255)";
            }
            return " ";
        }
     
    public String del_action() {
            //TableRowDataProvider rowData = TableRowDataProvider)getBean("currentRow");
            //RowKey rowKey2 = rowData.getTableRow();
            //RowKey[] rk=t1.getTableRowGroupChild().getRenderedSelectedRowKeys();
            //Array ar=(Object [])rk;
            Iterator rowKeys = selectedRows.iterator();
            while (rowKeys.hasNext()) {
                RowKey rowKey = (RowKey) rowKeys.next();
                Integer i=(Integer)xtmp_orderDataProvider.getValue("xtmp_order.LINE_NUMBER", rowKey);
                int j=i.intValue();
                try {
                    Context initCtx = new InitialContext();
                    DataSource ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/mos_data");
                    Connection connect = ds.getConnection();
                    PreparedStatement ps = connect.prepareStatement("DELETE FROM xtmp_order WHERE xtmp_order.SESSION_ID='"+getSessionBean1().getSessionId()+"' AND xtmp_order.LINE_NUMBER="+j);
                    ps.execute();
                    ps=connect.prepareStatement("UPDATE xtmp_order SET xtmp_order.LINE_NUMBER=xtmp_order.LINE_NUMBER-1 WHERE xtmp_order.SESSION_ID='"+getSessionBean1().getSessionId()+"' AND xtmp_order.LINE_NUMBER>"+j);
                    ps.executeUpdate();
                    ps.close();
                    connect.close();
                    xtmp_orderDataProvider.refresh();
                } catch(NamingException e) {
                    e.printStackTrace();
                } catch(SQLException e) {
                    e.printStackTrace();
                }
            }
            update_total();
            setTxt();
            return null;
        }
    Si je clique sur le lien supprimer(et si des lignes sont sélectionnées), la méthode del_action est bien exécutée, mais la variable selectedRows est toujours vide.

    Je ne vois pas d'où peut provenir l'erreur.
    J'ai déjà utiliser ce principe pour d'autres pages JSP et je n'ai jamais eu de problème. Je me demande si çà ne viendrait pas du fait que j'ai mis ma table dans un panelLayout...

    Si quelqu'un aurait le courage de jeter un oeil sur le code (je sais c'est long, mais normalement y'a tout ce qui intervient dans le processus), je lui en serai très reconnaissant.

    Merci d'avance

    Nicolas

  2. #2
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 84
    Points
    84
    Par défaut
    Pour ce que çà intéressera, j'ai trouvé une solution en rajoutant ce code au début de ma méthode del_action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    RowKey[] rk=row1.getRowKeys();
            for(int i=0;i<rk.length;i++)
            {
                row1.setRowKey(rk[i]);
                if (ck1.isChecked()) {
                    selectedRows.add(rk[i]);
                } else {
                    selectedRows.remove(rk[i]);
                }
            }
    Y'a surement mieux à faire , mais en tout cas çà a le mérite de marcher.

    Nicolas

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

Discussions similaires

  1. [WD17] Problème avec les lignes sélectionnées d'une table
    Par cladoo dans le forum WinDev
    Réponses: 1
    Dernier message: 12/09/2012, 19h22
  2. Récupérer les lignes uniques dans une table
    Par Empty_body dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/01/2009, 19h23
  3. Problème pour compter les lignes d'un résultat
    Par Yoshidu62 dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/07/2006, 11h18
  4. Réponses: 12
    Dernier message: 25/06/2006, 23h24
  5. Réponses: 10
    Dernier message: 16/11/2005, 08h33

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