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 :

Récupérer la ligne sélectionnée dans ScrollableDataTable


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Mars 2008
    Messages
    1 123
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 1 123
    Par défaut Récupérer la ligne sélectionnée dans ScrollableDataTable
    Bonsoir à tous

    voici mon bean qui me remplit un scrolldatatable
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    package Test;
     
     
     import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Vector;
     
    import javax.faces.component.UIComponent;
    import javax.faces.component.html.HtmlDataTable;
    import javax.faces.context.FacesContext;
    import javax.faces.event.ActionEvent;
    import javax.faces.model.DataModel;
    import javax.faces.model.SelectItem;
     
    import org.richfaces.model.impl.ListDataModel;
     
    import Test.BDD;
     
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    import java.sql.Connection;
     
     
    public class Recherche {
    	private String MO;  
    	private DataModel list = new ListDataModel();
        //private ArrayList<EMPLOYES> list;
    	private ResultSet  RS;
     
    	public String getMO() {
    		return MO;
    	}
    	public void setMO(String MO) {
    		this.MO = MO;
    	}
     
    	@SuppressWarnings("unchecked")
     
      public DataModel getlist() {
     
            if (list == null) {
     
     
     
     
                   Connection con = new BDD().getCon();
     
    				try {
    					//list = new ArrayList<EMPLOYES>(); 
    					 String SqlStr = "  select   CODE_SOC, MATRI, NOM, PRENOM, FONCTION as LIBEL,'EXTERNE' as TYPE   from DC_DEMANDEUREX  ";//WHERE UPPER(DC_DEMANDEUREX.NOM) LIKE '%"+ MO.toUpperCase() +"%' OR UPPER(DC_DEMANDEUREX.PRENOM) LIKE '%"+ MO.toUpperCase() +"%'UNION" ; 
    					// SqlStr =SqlStr+ "  select   CODE_SOC, MATRI, NOM, PRENOM, LIBEL,'INTERNE' as INTERNE from DC_EMPLOYES WHERE UPPER(DC_EMPLOYES.NOM) LIKE '%"+ MO.toUpperCase() +"%'OR UPPER(DC_EMPLOYES.PRENOM) LIKE '%"+ MO.toUpperCase() +"%' ORDER BY  TYPE DESC, CODE_SOC, MATRI, NOM, PRENOM ";  
    					 Statement stmt= con.createStatement();
    					 RS = stmt.executeQuery(SqlStr);
     
    						while(RS.next())
    						{
    							 list.setWrappedData( new EMPLOYES(RS.getString("CODE_SOC"),RS.getInt("MATRI"),RS.getString("NOM"),RS.getString("PRENOM"),RS.getString("LIBEL"),RS.getString("TYPE") ));
    						}
    				} catch (SQLException e) {
     
    					e.printStackTrace();
    				}
     
     
               }
               return list;
       }
     
     
    	public void selectionneElement(ActionEvent evt) {
    	    // On récupère la datatable.
    	    HtmlDataTable table = getParentDatatable((UIComponent) evt.getSource());
    	    // On récupère l'objet affiché à la bonne ligne de la datatable.
    	    Object o = table.getRowData();
    	    // On récupère aussi son index
    	    int index = table.getRowIndex();
    	    // Suite du traitement sur l'objet sélectionné.
    	}
     
    	private HtmlDataTable getParentDatatable(UIComponent compo) {
    	    if (compo == null) {
    	        return null;
    	    }
    	    if (compo instanceof HtmlDataTable) {
    	        return (HtmlDataTable) compo;
    	    }
    	    return getParentDatatable(compo.getParent());
    	}
     
     
     
     
     
    }

    et le code de ma 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    <rich:scrollableDataTable  var="RECH" value="#{Recherche.list}" 
     frozenColCount="1"
                first="0"
                rows="40" 
                width="680px"
                height="396px" style="font-size:12pt;">
     
                 <rich:column sortBy="#{RECH.TYPE}"  width="80px" style="text-align:center;font-size:12pt;" >
                  <f:facet name="header"><h:outputText value="TYPE" /></f:facet>
                  <h:outputText  value="#{RECH.TYPE}"style="text-align:center;" />
                 </rich:column> 
     
               <rich:column sortBy="#{RECH.MATRI}"  width="70px" style="text-align:center;font-size:12pt;">
                 <f:facet name="header"><h:outputText value="MATRICULE" /></f:facet>
                 <h:outputText value="#{RECH.MATRI}" style="text-align:center;"/>
                </rich:column>
     
                  <rich:column sortBy="#{RECH.CODE_SOC}"  width="80px" style="text-align:center;font-size:12pt;">
                 <f:facet name="header"><h:outputText value="CODE SOCIETE" /></f:facet>
                 <h:outputText value="#{RECH.CODE_SOC}" style="text-align:center;"/>
                </rich:column>
     
     
                <rich:column sortBy="#{RECH.NOM}"  width="100px" style="text-align:center;font-size:12pt;">
                 <f:facet name="header"><h:outputText value="NOM" /></f:facet>
                 <h:outputText value="#{RECH.NOM}" style="text-align:center;"/>
                </rich:column>
     
                 <rich:column sortBy="#{RECH.PRENOM}"  width="100px" style="text-align:center;font-size:12pt;">
                  <f:facet name="header"><h:outputText value="PRENOM" /></f:facet>
                  <h:outputText  value="#{RECH.PRENOM}"style="text-align:center;" />
                 </rich:column>
     
                 <rich:column sortBy="#{RECH.LIBEL}"  width="250px" style="text-align:center;font-size:12pt;">
                  <f:facet name="header"><h:outputText value="FONCTION" /></f:facet>
                  <h:outputText  value="#{RECH.LIBEL}"style="text-align:center;" />
                 </rich:column>
     
     
     
     
    </rich:scrollableDataTable >
    comment je peux modifier mes codes pour que:
    quad je clique sur un COmmandButton j'aurai le contenu d'une cellule de la ligne sélectionnée

    Merci

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2008
    Messages
    1 123
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 1 123
    Par défaut
    pour le input j'ai lui affecté la valeur comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:inputText styleClass="inputText" value="#{Recherche.selected}"id="Affect" size="75"  style=" width : 403px;" disabled="true"/>
    et j'ai modifier mon bean comme suit:
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
     
    package Test;
     
     
     import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Vector;
     
    import javax.faces.component.UIComponent;
    import javax.faces.component.UIData;
    import javax.faces.context.FacesContext;
    import javax.faces.event.AbortProcessingException;
    import javax.faces.event.ActionEvent;
    import javax.faces.model.SelectItem;
     
    import org.richfaces.component.UIScrollableDataTable;
    import org.richfaces.model.ScrollableTableDataModel.SimpleRowKey;
    import org.richfaces.model.selection.Selection;
    import org.richfaces.model.selection.SimpleSelection;
     
    import Test.BDD;
     
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    import java.sql.Connection;
     
     
    public class Recherche {
    	private SimpleSelection selection = new SimpleSelection();
    	private static List<EMPLOYES> list = null;
    	private ArrayList<EMPLOYES> SelectedEM= new ArrayList<EMPLOYES>();
    	private ResultSet  RS;
    	private UIScrollableDataTable table;
     
    	private int Selected;
     
     
     
    	@SuppressWarnings("unchecked")
     
      public List<EMPLOYES> getlist() {
     
            if (list == null) {
     
     
                   Connection con = new BDD().getCon();
     
    				try {
    					 list = new ArrayList<EMPLOYES>(); 
    					 String SqlStr = "  select   CODE_SOC, MATRI, NOM, PRENOM, FONCTION as LIBEL,'EXTERNE' as TYPE   from  DC_DEMANDEUREX";// UNION" ; 
    					// SqlStr =SqlStr+ "  select   CODE_SOC, MATRI, NOM, PRENOM, LIBEL,'INTERNE' as INTERNE from DC_EMPLOYES ORDER BY  TYPE DESC, CODE_SOC, MATRI, NOM, PRENOM ";  
    					 Statement stmt= con.createStatement();
    					 RS = stmt.executeQuery(SqlStr);
     
    						while(RS.next())
    						{
    							 list.add( new EMPLOYES(RS.getString("CODE_SOC"),RS.getInt("MATRI"),RS.getString("NOM"),RS.getString("PRENOM"),RS.getString("LIBEL"),RS.getString("TYPE") ));
     
    						}
     
    				} catch (SQLException e) {
     
    					e.printStackTrace();
    				}
     
     
               }
     
     
     
     
               return  list;
       }
     
     
    	public SimpleSelection getSelection() 
    	{
            return selection;
        }
     
        public void setSelection(SimpleSelection selection)
        {
            this .selection = selection;
        }
     
     
    	//******************************************** 
     
    	 public int getSelected() 
    	  {
    		  if (SelectedEM != null)
    		  {
    			//Affecter la valeur de la première cellule
    		  }
     
    		return Selected;
    	  }
     
     
     
     
     
    	 public String takeSelection() {
    			getSelectedEM().clear();
    			if (getSelection().isSelectAll()){
    				getSelectedEM().addAll(list);
    			}else{
    				Iterator<Object> iterator = getSelection().getKeys();
    				while (iterator.hasNext()){
    					Object key = iterator.next();
    					table.setRowKey(key);
    					getSelectedEM().add((EMPLOYES)table.getRowData());
     
     
    				}
    			}
    			return null;
    		}
     
     
    	  //******************************************
    	    public ArrayList<EMPLOYES> getSelectedEM() {
    	        return SelectedEM;
    	    }
     
    	    public void setSelectedEM( ArrayList<EMPLOYES> SelectedEM) 
    	    {
    	        this.SelectedEM = SelectedEM;
     
    	    }
    }
    et le code de mon bouton qui envoie la sélection à mon Input :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <a4j:commandButton value="Show Current Selection" reRender="Affect" 
    action="#{Recherche.takeSelection}" immediate="true"/>
    quand j'ai ajouté un system.out.print à la fin de takeselection rien ne s'affiche
    j'ai remarqué que la méthode n'est jamais appelée

    où est le problème dans mon code

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2008
    Messages
    1 123
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 1 123
    Par défaut
    SVP, où est le problème j'ai toujour la taille de ma sélection = 0

    pourquoi

Discussions similaires

  1. récupérer la ligne sélectionnée dans un GtkListStore
    Par katorps dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 29/08/2012, 23h16
  2. Récupérer la ligne sélectionnée dans un ListView
    Par altropus dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 15/02/2010, 11h57
  3. Réponses: 3
    Dernier message: 16/07/2008, 11h01
  4. Récupérer le numéro de la ligne sélectionnée dans une variable?
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/10/2007, 11h48
  5. Récupérer la ligne sélectionnée dans un ListBox
    Par jmjmjm dans le forum Composants VCL
    Réponses: 3
    Dernier message: 11/11/2005, 22h13

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