Modifier datatable JSF2 primefaces par code

Signaler
Messages postés
15
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
19 septembre 2012
-
Messages postés
15
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
19 septembre 2012
-
bonjour,
j'ai une datatable que je veux modifier par code : cette datatable contient des checbox dans une colonne, quelque uns sont desactivés (pas de problemes jusqu'ici) mais les autres qui sont activés : je veux qu'une seule checkbox au plus a chque moment soit coché : ca veut dire si l'utilisateur coche une checkbox alors si il avait deja ciché une autre avant alors elle doit etre decoché
alors pour faire ca voila mon code :



Stock Papiers






























le managedBean :

private org.primefaces.component.datatable.DataTable hd;

public org.primefaces.component.datatable.DataTable getHd() {
return hd;
}

public void setHd(org.primefaces.component.datatable.DataTable hd) {
this.hd = hd;
}

public void checkListener(AjaxBehaviorEvent e) {
System.out.println("je suis "+e.getComponent().getClientId()+" utilisé : et tmp :" );

List lp1;
lp1 = new ArrayList();
lp1 = (List) getHd().getValue();
// getHd().se
System.out.println("lp1.size() : "+lp1.size());
Boolean a = true;
System.out.println("ce bool a = "+a);
for(int i = 0 ; i< lp1.size();i++){
System.out.println("alors le cheched est : "+lp1.get(i).getChecked());
if(lp1.get(i).getChecked()){
if(lastChecked != null){
for(int j = 0;j
A voir également:

5 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
312
Salut,

Regardes sur le site de primefaces, ce que tu cherches à faire est dans la liste de leurs exemples :
http://www.primefaces.org/showcase/ui/datatableRowSelectionRadioCheckbox.jsf
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
312
   
Messages postés
15
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
19 septembre 2012

merci pour l'idée Julien39,
j'avais deja vu cette exemple mais j'avais pas l'idée d'aller le chercher a ce moment
juste une question concernant la mise en place de cette exemple
dans la classe CarDataModel

comment je peux implementer cette methode pour mon cas :
@Override  
    public Car getRowData(String rowKey) {  
        //In a real app, a more efficient way like a query by rowKey should be implemented to deal with huge data  
          
        List<Car> cars = (List<Car>) getWrappedData();  
          
        for(Car car : cars) {  
            if(car.getModel().equals(rowKey))  
                return car;  
        }  
          
        return null;  
    }  

merci d'avance
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
312
Quel est ton problème ?
Messages postés
15
Date d'inscription
vendredi 13 juillet 2012
Statut
Membre
Dernière intervention
19 septembre 2012

voila en detail mon probleme :
je veux utiliser cette radio datatable : http://www.primefaces.org/showcase/ui/datatableRowSelectionRadioCheckbox.jsf

mais moi je veux declencher la boite de dialogue sans avoir recours à cliquer sur le boutton view alors pour cela et aussi je ne veux pas utiliser cette datatable :
http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf

car je veux que l'utilisateur coche un radiobutton

voila ma page xhtml :





TODO supply a title







RadioButton Based Selection









#{car.libelle}





#{car.format}





#{car.stock}

































et voila mon managedBean :
package controlleurs.admin;

import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.SelectEvent;
import pojos_mappingFiles.Papier;


@ManagedBean
@SessionScoped
public class NewJSFManagedBean {

metiers.admin.stockHelper sh;
Papier selectedPapier;
List papiers;
papierDataModel mediumPapiersModel;
/**
* Creates a new instance of NewJSFManagedBean
*/
public NewJSFManagedBean() {
sh = new metiers.admin.stockHelper();
papiers = new ArrayList();
papiers = sh.getPapiers();
for(Papier pap : papiers ){
pap.setChecked(false);
}
mediumPapiersModel = new papierDataModel(papiers);
}

public Papier getSelectedPapier() {
System.out.println("j ai selectionz ");
return selectedPapier;
}

public void setSelectedPapier(Papier selectedPapier) {
System.out.println("je suis selectionné mon numero : "+selectedPapier.getLibelle());
this.selectedPapier = selectedPapier;
}

public papierDataModel getMediumPapiersModel() {
return mediumPapiersModel;
}

public void onRowSelect(SelectEvent event) {
System.out.println("je suis dans onRowSelect");
}

}

et voila la classe papierDataModel :
package controlleurs.admin;
import java.util.List;
import javax.faces.model.ListDataModel;
import org.primefaces.model.SelectableDataModel;
import pojos_mappingFiles.Papier;


public class papierDataModel extends ListDataModel implements SelectableDataModel {

public papierDataModel() {
}

public papierDataModel(List data) {
super(data);
}

@Override
public Object getRowKey(Papier t) {
return t.getId().toString();

}

@Override
public Papier getRowData(String rowKey) {
List papiers = (List) getWrappedData();

for(Papier car : papiers) {
if(car.getId().toString().equals(rowKey))
return car;
}

return null;
}

}

mais malheureusement la boite de dialogue ne s'affiche pas lorsque je coche une des radiobutton de la datatable