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

Struts 1 Java Discussion :

[Struts-Layout][datagrid] Divers problèmes.


Sujet :

Struts 1 Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut [Struts-Layout][datagrid] Divers problèmes.
    Bonjour,

    J'ai un formulaire avec un datagrid "listePC",
    mes soucis sont que quand je fais appel à la fonction js StrutsLayout.addDatagridLine('listePC'), une nouvelle ligne s'affiche bien, mais ne reprend pas mon datagridSelect.
    De plus, bien qu'ayant précisé selectionAllowed="true", ça n'a pas l'air de marcher, ce qui fait que mon appel à la méthode js StrutsLayout.setDatagridLineState('listePC', 'removed') ne marche pas.

    Si ça parle à quelqu'un ... merci d'avance.

    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
     
    	<layout:row>
    		<layout:datagrid property="listePC" selectionAllowed="true" multipleSelectionAllowed="false" model="datagrid" >
    			<layout:datagridColumn title="Clef comptable" property="clefComptable"/>
    			<layout:datagridSelect title="No. Compte" property="noCompte">
    				<layout:options collection="listeNoCompteContrepartie" labelProperty="label" property="value" />
    			</layout:datagridSelect>
    			<layout:datagridColumn title="Montant" property="montant"/>						
    			<layout:datagridColumn title="Centre de coût" property="centreDeCout"/>			
    			<layout:datagridColumn title="Code TVA" property="codeTVA"/>									
    		</layout:datagrid>	
    		<layout:column>
    			<layout:button onclick="StrutsLayout.addDatagridLine('listePC')">Ajouter</layout:button>
    			<layout:button onclick="StrutsLayout.setDatagridLineState('listePC', 'removed')">Enlever</layout:button>
    		</layout:column>
    	</layout:row>

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par 2280_2280 Voir le message
    J'ai un formulaire avec un datagrid "listePC",
    mes soucis sont que quand je fais appel à la fonction js StrutsLayout.addDatagridLine('listePC'), une nouvelle ligne s'affiche bien, mais ne reprend pas mon datagridSelect.
    Je ne comprends pas bien ce que tu veux dire par là.
    Peux-tu être plus précis ?
    As-tu un message d'erreur ?

    Citation Envoyé par 2280_2280 Voir le message
    De plus, bien qu'ayant précisé selectionAllowed="true", ça n'a pas l'air de marcher, ce qui fait que mon appel à la méthode js StrutsLayout.setDatagridLineState('listePC', 'removed') ne marche pas.
    Ajoute l'attribut styleClass="DATAGRID" dans le tag layout:datagrid et ajoute ceci dans le fichier default.css du répertoire config ou dans celui que tu utilises si tu en as défini un personnalisé :
    /************************************
    * Datagrid styles *
    ************************************/

    TABLE.DATAGRID {
    background-color : #336699;
    }

    TH.DATAGRID {
    color : #FFFFFF;
    background-color : #336699;
    font-weight: bold;
    font-family : verdana;
    }

    TABLE.DATAGRID TR TD {
    font-family : verdana;
    padding: 2px;
    }

    TR.DATAGRID {
    background-color : #FFFFFF;
    }

    TR.DATAGRID2 {
    background-color : #FFFFFF;
    }

    .DATAGRID_SEL {
    background-color : #336699;
    }

    .DATAGRID_DEL {
    text-decoration: line-through;
    }

    TR.DATAGRID_DEL TD INPUT {
    text-decoration: line-through;
    }

    TABLE.DATAGRID TR TD INPUT {
    width: 100%;
    }

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Je ne comprends pas bien ce que tu veux dire par là.
    Peux-tu être plus précis ?
    As-tu un message d'erreur ?
    Merci de prendre le temps de me répondre,
    De fait, quand j'ajoute une nouvelle ligne, celle-ci est bien ajoutée mais ne contient que mes datagridColumn et non pas les datagridSelect.

    Citation Envoyé par c_nvy Voir le message
    Ajoute l'attribut styleClass="DATAGRID" dans le tag layout:datagrid et ajoute ceci dans le fichier default.css du répertoire config ou dans celui que tu utilises si tu en as défini un personnalisé :
    Ok, j'essaye ça.

  4. #4
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Merci c_nvy , ma fonction "enlever" marche très bien maintenant.

  5. #5
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par 2280_2280 Voir le message
    De fait, quand j'ajoute une nouvelle ligne, celle-ci est bien ajoutée mais ne contient que mes datagridColumn et non pas les datagridSelect.
    Tu ne récupères pas les valeurs sélectées, soit celles de la propriété noCompte ?

  6. #6
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    En fait, avec un datagrid contenant 2 datagridColumn et 3 datagridSelect, lorsque j'ajoute une ligne, celle-ci ne contient que mes 2 datagridColumn

    Quelque chose comme ça

    [Col 1][Select 1][Select 2][Select 3][Col 2] <- ligne initiale
    [Col 1][Col 2] <- ligne ajoutée

  7. #7
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    noCompte est bien une propriété de l'objet constituant le Datagrid ?

    Peux-tu montrer le code de récupération des lignes ajoutées ?

  8. #8
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Oui, noCompte en fait bien partie.
    Je ne pense pas que le problème vienne de là étant donné que j'ai ajouté deux autres selectBox à mon datagrid, le problème restant le même :

    Voici mon nouveau datagrid :

    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
     
    	<layout:row>
    		<layout:datagrid property="listePC" selectionAllowed="true" multipleSelectionAllowed="false" model="datagrid" styleClass="DATAGRID" >
    			<layout:datagridColumn title="Clef comptable" property="clefComptable"/>
    			<layout:datagridSelect title="No. Compte" property="noCompte">
    				<layout:options collection="listeNoCompteContrepartie" labelProperty="label" property="value" />
    			</layout:datagridSelect>
    			<layout:datagridColumn title="Montant" property="montant"/>						
    			<layout:datagridSelect title="Centre de coût" property="centreDeCout">
    				<layout:options collection="listeCentreDeCouts" labelProperty="description" property="id" />
    			</layout:datagridSelect>			
    			<layout:datagridSelect title="Code TVA" property="codeTVA">
    				<layout:options collection="listeCodeTVA" labelProperty="description" property="id" />
    			</layout:datagridSelect>						
    		</layout:datagrid>	
    		<layout:column>
    			<layout:button onclick="StrutsLayout.addDatagridLine('listePC')">Ajouter</layout:button>
    			<layout:button onclick="StrutsLayout.setDatagridLineState('listePC', 'removed')">Enlever</layout:button>
    		</layout:column>
    	</layout:row>
    Ici le bean chargé dans mon datagrid :
    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
     
    public class PosteContrepartie {
     
    	public static final String CLE_COMPTABLE_AVOIR = "40";
     
    	public static final String CLE_COMPTABLE_FACTURE = "50";
     
    	private String clefComptable;
     
    	private String noCompte;
     
    	private String montant;
     
    	private String centreDeCout;
     
    	private String codeTVA;
     
    [...]
     
    }
    Et la fonction js d'ajout de ligne - c'est ça dont tu parles ? (je n'ai pas encore codé l'action de traitement de mon formulaire)

    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
     
    // add a line, PUBLIC
    StrutsLayout.addDatagridLine = function(property) {				
    	// Get the datagrid.
    	var datagrid = strutsLayoutDatagridData[property];
     
    	// Get the table object.
    	var table = document.getElementById(datagrid.styleId);
     
    	// Create a new line.
    	var newRow = table.insertRow(table.rows.length);
    	var odd = table.rows.length % 2;		
    	newRow.className = !odd ? datagrid.styleClass : datagrid.styleClass2;
    	if (datagrid.allowSelection) {
    		newRow.onclick = new Function("strutsLayoutDatagridData['" + property + "'].selectDatagridLine(" + table.rows.length + ");");
    		newRow.style.cursor = "pointer;hand;";
    	}
    	var newCell;
    	for (i in datagrid.columns) {
    		var column = datagrid.columns[i];
    		var cellStyle = column.styleClass;
    		newCell = datagrid.addDatagridCell(newRow, table.rows.length-2, property + "." + column.property, cellStyle);
    	}		
     
    	var hidden = datagrid.createStateElement(table.rows.length-2, "");
    	table.parentNode.appendChild(hidden);		
    }

  9. #9
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    C'est le code Javascript de Struts-Layout que tu as posté.
    Je parlais de celui de l'Action.
    Si tu ne l'as pas codé, comment sais-tu que tu ne récupères pas les valeurs sélectées ?
    Normalement, tu devrais récupérer les valeurs sélectées dans les listes déroulantes après submit du formulaire.

  10. #10
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    C'est le code Javascript de Struts-Layout que tu as posté.
    Je parlais de celui de l'Action.
    Si tu ne l'as pas codé, comment sais-tu que tu ne récupères pas les valeurs sélectées ?
    Normalement, tu devrais récupérer les valeurs sélectées dans les listes déroulantes après submit du formulaire.
    Tu as vu mon schéma au-dessus ?

    Je vais essayer d'être clair :

    Initialement j'ai ça :

    [Col 1][Select 1][Select 2][Select 3][Col 2]
    [Col 1][Select 1][Select 2][Select 3][Col 2] [Ajouter]

    Et quand je clique sur [Ajouter], le code js m'ajoute bien une nouvelle ligne mais sans mes [Select *] de telle sorte que je me retrouve avec ça :

    [Col 1][Select 1][Select 2][Select 3][Col 2]
    [Col 1][Select 1][Select 2][Select 3][Col 2] [bouton Ajouter]
    [Col 1][Col 2] <- ligne ajoutée sans les select.

    Désolé, je ne peux pas poster d'image de mon poste de travail.

  11. #11
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Ok. Donc, quand tu cliques sur Ajouter, il t'ajoute une nouvelle ligne sans les select. C'est bizarre.
    J'ai une appli de test dans laquelle ça fonctionne très bien.

    Quelle version de Struts-Layout utilises-tu ?

  12. #12
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    En fait, je sais même pas, je dirais anté-dilluvienne ... un vieux projet qu'on déterre ...

    Le "version.properties" du struts-layout.jar sans que je sache si c'est issue de cvs ou du jar lui-même :

    #Sun Dec 04 04:02:01 CET 2005
    build.date=2005/12/04 04\:02
    Je vais essayer de bidouiller mon javascript, même si je ne peux pas vraiment débugger (j'ai juste IE6)
    Quoi qu'il en soit, je te remercie encore une fois pour ta patience et ta réactivité

  13. #13
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Ah ... en parlant d'IE6, je viens juste de m'apercevoir que celui-ci me signalait une erreur js quand j'ai des selectbox dans mon datagrid et pas quand il n'y en a pas ... je vais essayer de retrouver la fonction ... à priori ceci doit expliquer cela.

  14. #14
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Moi j'utilise Struts-Layout 1.3 sous IE6 et ça fonctionne très bien.
    Si tu ne peux pas monter de version de Struts-Layout, tu peux quand même récupérer le javascript datagrid.js de Struts-Layout 1.3 et faire un test.

  15. #15
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Apparement, ce sont mes balises layout:options qui lui déplaisent ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <layout:options collection="listeCentreDeCouts" labelProperty="description" property="id" />
    qui me génère un code comme celui-ci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script>strutsLayoutDatagridData['listePC'].addColumn('centreDeCout', '', 'select', [new StrutsLayout.Option('',''),new StrutsLayout.Option('0090-9998 centre cdg technique','0090-9998'),new StrutsLayout.Option('0090-0677 prospection food','0090-0677'),new StrutsLayout.Option('0090-0308 personnel en formation','0090-0308'),new StrutsLayout.Option('0090-0297 marketing indirect','0090-0297'),new StrutsLayout.Option('0090-0296 activite formation','0090-0296'),new StrutsLayout.Option('0090-0295 food indirect','0090-0295'),new StrutsLayout.Option('0090-0294 food directcentre de formation hot','0090-0294'),new StrutsLayout.Option('0090-0290 administration','0090-0290')]);</script>

  16. #16
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Moi j'utilise Struts-Layout 1.3 sous IE6 et ça fonctionne très bien.
    Si tu ne peux pas monter de version de Struts-Layout, tu peux quand même récupérer le javascript datagrid.js de Struts-Layout 1.3 et faire un test.
    Tout à fait, je teste ça dans l'après-midi.

    Merci.

  17. #17
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Yipikae ! ça marche.

    Laisse-moi te remercier encore une fois

  18. #18
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    De rien.

    Bon courage pour la suite.

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

Discussions similaires

  1. [Struts-Layout] DataGrid problème
    Par riroucha dans le forum Struts 1
    Réponses: 1
    Dernier message: 13/03/2013, 20h16
  2. Réponses: 2
    Dernier message: 31/01/2008, 15h45
  3. [Struts-Layout] Datagrid : Erreur Unchecked Conversion
    Par Le Pharaon dans le forum Struts 1
    Réponses: 13
    Dernier message: 21/09/2007, 10h02
  4. cacher des colonnes du struts layout datagrid
    Par imsory dans le forum Struts 1
    Réponses: 1
    Dernier message: 02/04/2007, 12h28
  5. Réponses: 2
    Dernier message: 26/02/2007, 00h56

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