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 :

[PF-datatable] Colorer une ligne après édition de cellule


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut [PF-datatable] Colorer une ligne après édition de cellule
    Bonjour,

    J'ai une table éditable en mode cellule. J'ai également un rowStyleClass qui colore ou non une ligne en fonction d'un boolean.
    Tout fonctionne très bien lorsque j'affiche les données.

    Par contre, j'aimerais que, quand je modifie le boolean d'une ligne, celle-ci se colore ou décolore directement après la modification, sans devoir recharger la liste.
    Voici ma table en question :
    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
     
    <p:dataTable id="heures" value="#{controleHeuresMandatForm.listHeures}"
    				widgetVar="heureTable"
    				var="heure"
    				rowStyleClass="#{heure.tarifTemps ? 'rowColorOrange' : null}"
    				rowKey="#{heure.id}"
    				editable="true" editMode="cell"
    				emptyMessage="#{msg['AucuneSaisieAAfficher']} - #{msg['AvezVousBienRenseigneLesChampsDeRecherche']}" > 
     
    				<p:ajax event="cellEdit" listener="#{controleHeuresMandatForm.enregistrerModification}" update="controleHeuresMandatForm:heures" />
     
    				<p:column headerText="#{msg['Description']}" style="width:20%">
    					<p:cellEditor>
    						<f:facet name="output">
    							<h:outputText value="#{heure.description}" />
    						</f:facet>
    						<f:facet name="input">
    							<p:inputText value="#{heure.description}" style="width:96%"
    								label="Description" />
    						</f:facet>
    					</p:cellEditor>
    				</p:column>
     
    		   		<p:column headerText="#{msg['AbregeTarifTemps']}" styleClass="columnCenter" style="width:3%">
    					<p:cellEditor>
    						<f:facet name="output">
    							<h:outputText value="#{heure.typeTarifTempsCi.nom}" />
    						</f:facet>
    						<f:facet name="input">
    							<p:selectOneMenu id="tarifTemps" required="true" value="#{heure.typeTarifTempsCi}" style="width:40px" >
    								<f:selectItems value="#{controleHeuresMandatForm.listTypeTarifTemps}" />
    								<p:ajax event="blur" update="@this" />
    							</p:selectOneMenu>
    						</f:facet>
    					</p:cellEditor> 
    				</p:column>
    			</p:dataTable>
    Et la méthode d'enregistrement :
    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
     
    public void enregistrerModification(CellEditEvent event) {
    		try {
    			DataTable table = (DataTable) event.getSource();
    			Heure heure = (Heure) table.getRowData();
     
    			if (heure.getMandat() != null && heure.getDate() != null) {
    				if (CollectionUtils.isNotEmpty(heure.getMandat().getListMandatIdentite()) && heure.getMandat().getListMandatIdentite().size() == 1) {
    					heure.setMaitreOuvrage(heure.getMandat().getListMandatIdentite().get(0).getIdentite());
    				}
     
    				heure.setTarifTemps(TypeValeurBooleanCi.OUI == heure.getTypeTarifTempsCi());
     
    				m_heureService.saveHeure(heure);
     
    				// Calcul les totaux d'heures
    				calculerTotauxHeures(heure);
    			} else {
    				FacesContext.getCurrentInstance().addMessage(
    						null,
    						new FacesMessage(FacesMessage.SEVERITY_ERROR, Messages
    								.getMessage("MandatEstObligatoire", null)
    								.getDetail(), ""));
    			}
     
    			chargerListeHeures();
    		} catch (Exception e) {
    			FacesContext.getCurrentInstance().addMessage(
    					null,
    					new FacesMessage(FacesMessage.SEVERITY_ERROR, Messages
    							.getMessage("ImpossibleDEnregistrerLaSaisie", null)
    							.getDetail()
    							+ " : ", ""));
     
    			FacesContext.getCurrentInstance().addMessage(
    					null,
    					new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getCause()
    							.getMessage(), ""));
    		}
    	}
    Je fais bien un update de la table dans l'event cellEdit, mais rien ne se passe.
    J'ai également essayé de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ajax.update("controleHeuresMandatForm:heures");
    à la fin de ma méthode d'enregistrement mais sans succès.

    Qqun a-t-il une idée ?
    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    J'aurais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p:ajax event="cellEdit" listener="#{controleHeuresMandatForm.enregistrerModification}" update="heures" />
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p:ajax event="cellEdit" listener="#{controleHeuresMandatForm.enregistrerModification}" update=":controleHeuresMandatForm:heures" />
    Peux-tu essayer ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut
    Salut, déjà merci pour ton aide.

    J'ai essayé les 2 mais aucune ne fonctionne

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Si tu mets un point d'arrêt dans le getter de tarifTemps, il y passe ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut
    Oui, il passe 4x dedans.
    Les 2 premières avec l'ancienne valeur et les 2 dernières avec la nouvelle valeur

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tu as quelle version de primefaces ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/01/2016, 11h20
  2. colorer une ligne séléctionné dans un datatable
    Par amico2009 dans le forum JSF
    Réponses: 2
    Dernier message: 09/04/2009, 21h40
  3. Sauter une ligne après un JLabel
    Par DefmY dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 12/05/2006, 10h09
  4. Comment "colorer" une ligne dans formulaire en col
    Par pyxosledisciple dans le forum IHM
    Réponses: 5
    Dernier message: 09/02/2006, 12h29
  5. [MySQL] Repositionnement dans une liste apres édition
    Par marcha dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 10/10/2005, 12h14

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