Modifier datatable JSF2 primefaces par code

nio2 Messages postés 12 Date d'inscription vendredi 13 juillet 2012 Statut Membre Dernière intervention 19 septembre 2012 - 2 sept. 2012 à 01:25
nio2 Messages postés 12 Date d'inscription vendredi 13 juillet 2012 Statut Membre Dernière intervention 19 septembre 2012 - 3 sept. 2012 à 14:14
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

5 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
3 sept. 2012 à 09:45
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
3 sept. 2012 à 09:46
   
0
nio2 Messages postés 12 Date d'inscription vendredi 13 juillet 2012 Statut Membre Dernière intervention 19 septembre 2012
3 sept. 2012 à 12:05
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
3 sept. 2012 à 13:57
Quel est ton problème ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nio2 Messages postés 12 Date d'inscription vendredi 13 juillet 2012 Statut Membre Dernière intervention 19 septembre 2012
3 sept. 2012 à 14:14
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
0
Rejoignez-nous