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 :

[datatable] La touche "Enter" lance une action dans ma table


Sujet :

JSF Java

  1. #1
    Membre actif
    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
    Points : 270
    Points
    270
    Par défaut [datatable] La touche "Enter" lance une action dans ma table
    Bonjour,

    J'ai une datatable éditable en mode édition de ligne.
    La première colonne de ma table représente un lien permettant de supprimer la ligne.
    Le problème est que lorsque je suis en édition d'une ligne, si j'appuie sur Enter, ça exécute mon action et ainsi supprime la ligne.

    Je vous mets le code de la table avec en rouge la colonne qui s'exécute avec le Enter du clavier:
    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
    <p:dataTable id="heures" value="#{saisirHeuresForm.listHeures}"
    				var="heure" widgetVar="heureTable"
    				emptyMessage="#{msg['AucuneSaisieAAfficher']}" rowKey="#{heure.id}"
    				editable="true" >
    
    				<f:facet name="header">
    					<p:outputPanel>
    						<div align="left">
    							<h:panelGrid id="actionmain" columns="2" style="width:300px;" styleClass="panelSansBordure">
    								<p:commandLink action="#{saisirHeuresForm.ajouterHeure}"
    									update=":saisirHeuresForm:heures" id="createHeureBtn"
    									disabled="#{saisirHeuresForm.montantTarifKm eq 0 or saisirHeuresForm.currentEmployePer eq null}"
    									styleClass="ui-icon ui-icon-action-ajouter"
    									oncomplete="jQuery('.ui-datatable-data tr').last().find('span.ui-icon-pencil').each(function(){jQuery(this).click()});" />
    								
    								<h:commandButton id="printRapport" value="#{msg['RapportMensuel']}"
    									action="#{saisirHeuresForm.generateRapportMensuel}"></h:commandButton>
    							</h:panelGrid>
    						</div>
    					</p:outputPanel>
    				</f:facet>
    
    				<p:ajax event="rowEdit" listener="#{saisirHeuresForm.enregistrerModification}" />
    				<p:ajax event="rowEditInit" listener="#{saisirHeuresForm.setSelectedHeureForEdit}" />
    
    				<p:column headerText="#" style="width:2%">
    					<p:commandLink />
    				</p:column>
    
    				<p:column headerText="#" style="width:2%">
    					<p:commandLink onclick="PF('confDeleteDlg').show()"
    							immediate="true" styleClass="ui-icon ui-icon-action-supprimer">
    						<f:setPropertyActionListener
    							target="#{saisirHeuresForm.selectedHeure}" value="#{heure}" />
    					</p:commandLink>
    				</p:column>
    
    				<p:column headerText="@ #{msg['Mandat']}" style="width:7%">
    					<p:cellEditor>
    						<f:facet name="output">
    							<h:outputText value="#{heure.mandat.numero}" />
    						</f:facet>
    						<f:facet name="input">
    							<p:autoComplete id="mandat" value="#{heure.mandat}"
    									completeMethod="#{saisirHeuresForm.completeMandat}" var="mandat"
    									itemLabel="#{mandat.formatHeure}" itemValue="#{mandat}"
    									converter="MandatConverter" forceSelection="false" size="50" >
    								<p:ajax event="itemSelect" listener="#{saisirHeuresForm.updateLists()}" update="mo, phase" />
    							</p:autoComplete>
    						</f:facet>
    					</p:cellEditor>
    				</p:column>
    			</p:dataTable>
    Qqun a-t-il une idée de comment empêcher ce comportement ?
    Merci pour votre aide

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tu peux définir le bouton de commande par défaut (celui qui sera appelé sur "Enter") avec <p:defaultCommand>.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    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
    Points : 270
    Points
    270
    Par défaut
    D'accord merci

    Ca serait possible de définir comme bouton de commande celui qui correspond à la validation de la ligne en cours de saisie ? Le problème est qu'il n'est pas déclaré dans la page
    Nom : tableau.png
Affichages : 243
Taille : 9,1 Ko

    Merci pour ton aide

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je ne vois pas de méthode simple pour faire ça...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    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
    Points : 270
    Points
    270
    Par défaut
    Effectivement, j'ai essayé des trucs du genre mais sans succès
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <p:defaultCommand target="jQuery('.ui-datatable-data tr').last().find('span.ui-icon-check')" />
    Mais il faudrait pouvoir trouver la ligne en édition et remlacer "last()" et je suis même pas sûr que ça marcherait.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Pour savoir laquelle est sélectionnée, tu as l’évènement "rowSelect" et "rowUnselect" en plus de "rowEdit" et "rowEditCancel", ça suffit pour déterminer l'indice dans la liste et adapter ton script mais bon, je ne sais pas comment primefaces régira par rapport aux bouton de soumission... à tester
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre actif
    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
    Points : 270
    Points
    270
    Par défaut
    J'ai mis ceci et la touche Enter ne lance plus la suppression de la ligne édition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <p:commandLink id="btnInactif" />
    <p:defaultCommand target="btnInactif" />
    Je me pencherai plus tard pour valider la saisie de la ligne en édition

    Merci pour ton aide OButterlin

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

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