Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Nouveau Membre du Club

    Étudiant
    Inscrit en
    juillet 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 31

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2006
    Messages : 45
    Points : 38
    Points
    38

    Par défaut datagrid editable Itemrenderer avec checkbox

    Bonjour,
    je viens vers vous car je viens de passer une bonne partie du week end à chercher ce qui n'allait pas.
    Je souhaite progresser en Flex et voila pourquoi je m'accroche... mais la je suis pour le moins battu...


    Je souhaite travailler sur une table d'une base de données MySQL.
    Je suis parti du menu "Data" de Flex 3 permettant de générer un formulaire pour ma table.

    J'ai un champ dans ma base de données qui a comme valeur 0 ou 1 afin de valider ou non la publication.(que j'ai type comme étant comme un texte)

    Pour ce champ, j'aimerais que dans mon datagrid (qui est éditable=true) l'on coche une checkbox pour faire passer valider de "1" à "0" et vice et versa.

    J'ai donc ajouté pour ma colonne "valide" un itemrenderer avec une checkbox.
    Avec le code suivant :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <mx:DataGrid id="dataGrid"
    	dataProvider="{dataArr}"
    	rowCount="8"
    	editable="true"
            variableRowHeight="true" 
    	resizableColumns="false"
    	headerRelease="setOrder(event);"
    	right="10" left="10" top="10" bottom="71">
    	<mx:columns>
    		<mx:DataGridColumn visible="false" headerText="citation_id" dataField="citation_idCol" />
    		<mx:DataGridColumn width="200"  headerText="Citation" wordWrap="true" dataField="citation_textCol"/>
    		<mx:DataGridColumn width="45"  headerText="Auteur" dataField="citation_authorCol" />
    		<mx:DataGridColumn width="80"  headerText="Qualité de l'auteur" dataField="citation_author_descCol" />
    		<mx:DataGridColumn width="30" headerText="Validé" editorDataField="selected" dataField="citation_validCol" rendererIsEditor="true">
    		<mx:itemRenderer>
                         <mx:Component>
                               <mx:CheckBox selected="{data.citation_validCol==1}"/>
    		      </mx:Component>
    		</mx:itemRenderer>
    	</mx:DataGridColumn>
    	</mx:columns>
    </mx:DataGrid>
    Vous allez me dire pourquoi data.citation_validCol==1, sans cette vieille feinte mon checkbox ne se checkait pas quand j'avais un 1 dans la colone...
    Comme mon datagrid est editable et que j'ai un écouteur sur son évenement EDIT_END j'aimerais que quand l'on clicke sur mon checkbox cela déclenche
    cet évènement en simulant une édition d'un case texte que l'on set à "0" ou à "1"...

    J'ai vu des codes on l'on fait un overwrite de la fonction set data et get data mais je ne suis pas familier avec cette syntaxe hélas...
    Je fais donc appel à votre aide pour voir de quelle issue je dispose car je seche vraiment...

    Je vous remercie par avance pour votre aide

    PS : J'ai mis mes sources actuelles ainsi que ma base de données pour que vous voyez plus clairement le probleme qui est le mien...

    BDD

    sources PHP

    Projet Flex

  2. #2
    Membre Expert

    Profil pro Ellène
    Inscrit en
    mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Nom : Ellène
    Localisation : France

    Informations forums :
    Inscription : mai 2006
    Messages : 895
    Points : 1 858
    Points
    1 858

    Par défaut

    Salut,

    Si tu veux éditer les éléments d'une datagrid tu devrais essayer un itemEditor :
    http://www.flex-tutorial.fr/2009/03/...a-mise-a-jour/

    J'ai vu des codes on l'on fait un overwrite de la fonction set data et get data mais je ne suis pas familier avec cette syntaxe hélas...
    Je fais donc appel à votre aide pour voir de quelle issue je dispose car je seche vraiment...
    Je ne vois pas ce qu'il y a de très compliqué mais si tu as un peu de mal post ton code et on t'aidera. En fait il s'agit juste d'une externalisation de l'item renderer pour que celui ci puisse être utilisé à plusieurs endroits c'est tout.

  3. #3
    Nouveau Membre du Club

    Étudiant
    Inscrit en
    juillet 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 31

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juillet 2006
    Messages : 45
    Points : 38
    Points
    38

    Par défaut

    Je vais essayer de voir avec ce lien la et au besoin je reviendrais sur le forum pour vous dire ce qu'il en ai.

    Merci en tout cas !

  4. #4
    Membre confirmé Avatar de samy2525
    Profil pro
    Inscrit en
    janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : janvier 2008
    Messages : 259
    Points : 298
    Points
    298

    Par défaut CheckBoxItemRenderer

    Bonjour, je pense que le sujet est vraiment largement abordé dans le forum sinon sinon si tu veux évoler dans le domaine de Flex je te conseille d'aller plus vers le AS comme ça tu toucheras à beaucoup beaucoup de chose bref

    à mon avis et comme j'ai deja poster tu dois créer un item Renderer de ce type
    Code :
    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
     
    package com.tonprojet.component.renderer
    {
     
     
    	import flash.events.Event;
    	import mx.containers.VBox;
    	import mx.controls.CheckBox;
     
    	public class CheckBoxAction extends VBox
    	{
    		private var checkBox : CheckBox;
    		public function CheckBoxAction()
    		{
    			super();
    			setStyle("horizontalCenter",0);
    			setStyle("verticalCenter",0);
     
     
    		}
     
    		override public function set data(value:Object):void {
     
                           if(value && 
                              value.hasOwnProperty("citation_validCol") &&
                               value.citation_validCol=="1"){
     
                                      checkBox.selected = true;
                            }
     
                            super.data = value;
     
    		}
     
    		override protected function createChildren():void{
     
    			super.createChildren();
    			checkBox = new CheckBox();
    			addChild(checkBox);
    		}
     
    	}
    }
    voila apés il faut juste applé cette class dans ton MXML

    en gros dans la ligne où tu as mis l'itemRenderer tu fais ca

    Code :
    1
    2
    <mx:DataGridColumn width="30" headerText="Validé" editorDataField="selected" dataField="citation_validCol" 
    itemRenderer="com.tonprojet.component.renderer.CheckBoxAction">
    et voila ton code est prés à être utiliser

    Bon courage

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •