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

Flex Discussion :

fusionner des lignes d'un datagrid ?


Sujet :

Flex

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Points : 79
    Points
    79
    Par défaut fusionner des lignes d'un datagrid ?
    bonjour,

    je voudrais savoir s'il est possible dans un controle DataGrid de "fusionner" certaines lignes". Je m'explique : mon tableau a 2 colonnes, une colonne affiche du texte et une colonne une cas à cocher. Toutes les lignes ne sont pas à cocher, je voudrai que ces lignes fassent la taille totale de mon datagrid et n'affiche que le texte sur la taille totale du tableau.
    Est ce possible ? Et si oui, comment ?

    merci !!!
    Pascale38

  2. #2
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    Tu utilises surement déjà un ItemRenderer pour afficher ta checkbox et ton texte, je suppose! et bien avec cet ItemRenderer tu peux tout à fait gérer ton affichage comme tu le souhaites. Pour être plus précis il me faudrait plus de détails sur ton dataGrid(le bout de code mxml ou AS)

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Points : 79
    Points
    79
    Par défaut
    heu en fait non, je n'utilise pas d'ItemRenderer, je construis ma datagrid "à la main".
    En fait j'ai une liste d'objet "A".
    Les objets A contiennent une liste d'objets "B".
    Je parcours donc cette arborescence, et créé les lignes au fur et à mesure, A doit être associé à un checkBox, B non...
    Bon en fait c'est un peu plus compliqué que ça, c'est pour ça que j'avais pas mis mon code... vu que en fait c'est pas juste une checkBox mais un composant à moi...

    bon bref voilà ce que ça donne à peu près :

    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
    private Grid grid;
    public function addGrid():void{
    	grid = new Grid();
    	for (var i:uint=0; i<maListeA.length; i++){
    		var a:A = maListeA.getItemAt(i) as A;
    		grid.addChild(addA(a));
     
    		for (var j:uint=0; j<maListeA.maListeB.length; j++){
    			var b:B = maListeB.getItemAt(j) as B;
    			grid.addChild(addB(b));
    		}
    	}
    }
     
    private function addA(a:A)::GridRow{
     
    	var row:GridRow = new GridRow();
    	var itemLabel:GridItem = addItemLabel(row, a.libelle);
    	itemLabel.data = a;
     
    	var item:GridItem = new GridItem();
    	row.addChild(item);
     
    	// mon composant perso qui doit être affiché que pour les A
    	var viewCell:ViewCellule = new ViewCellule();
    	item.addChild(viewCell);
    }
     
    private function addB(b:B):GridRow{
     
    	var row:GridRow = new GridRow();
    	var itemLabel:GridItem = addItemLabel(row, b.libelle);
    	itemLabel.data = b;
    }
     
    private function addItemLabel(row:GridRow, text:String):GridItem{
    	var item:GridItem = new GridItem();
    	row.addChild(item);
    	var label:Text = new Text();
    	label.text = text;
    	item.addChild(label);
     
    	return item;
    }
    merci !!!
    Pascale38
    (ah et au fait, génial ton blog, il m'a rendu déjà bien des services merci)

  4. #4
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    Euh si je résume tu souhaites avoir un tableau avec en entrée une ArrayCollection (ou un Array) et en sortie une liste avec pour chaque ligne soit juste un texte soit un texte plus une checkbox(enfin ton composant) , c'est bien ça?

    parce que a ce que je vois tu est en train de te compliquer sérieusement la tache... pourquoi ne pas avoir utiliser un dataGrid et son dataProvider, couplé à un ItemRenderer, ca peut etre fait très très rapidement. Mais peut etre que je n'ai pas une bonne vision de ton projet.

    Sur mon blog justement il y'a un article sur ce sujet: ici. pour cette exemple j'utilise un fichier XML en entrée mais il est tout fait possible d'utiliser une ArrayCollection

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Points : 79
    Points
    79
    Par défaut
    Alors bon j'ai jamais utilisé d'ItemRenderer (je vais de ce pas aller voir ça sur ton blog, sur !) mais je ne suis pas sûre que cela résolve mon problème.
    En effet je n'ai pas une simple liste en entrée, mais une liste dont chaque élément contient aussi une liste (une liste de A et chaque A contient une liste de B) et je veux afficher tout ça "à plat" (en fait ma structure est plus proche d'un Tree...) :
    A1
    B1
    B2
    B3
    A2
    B1
    A3
    B1
    B2

    j'espère être plus claire là ?

    bon sinon c'est pas très grave hein, c'est juste "visuel" mais bon ça la fout toujours mal de pas arriver à faire ce qui est demandé hihi
    merci en tout cas !!!
    Pascale38

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Points : 79
    Points
    79
    Par défaut
    Alors j'ai fait un essau avec un itemrenderer.
    J'ai réussi à afficher mes données correctement, mais comment récupérer les valeurs ? En effet mon arrayCollection qui me sert de dataprovider n'est pas modifié lorsque je coche ou décoche mes checkboxs, du coup comment récipérer les modifications ?
    merci !!!
    Pascale38

  7. #7
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    je n 'ai pas compris ton soucis. Tu affiches correctement tes données A1, B1, B2, B3, A2 , et Cie ? quel est le soucis? n'hésites pas à illustrer ton probleme avec du code c'est bien souvent plus explicite que des phrases

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Points : 79
    Points
    79
    Par défaut
    oups désolée, peut être devrai je ouvrir un autre post en fait ?
    non je n'ai pas réussi à afficher mes données comme je le veux avec l'itemrendrer, mais du coup en essayant d'utiliser l'itemRenderer j'ai un nouveau souci.
    Voilà mon code (j'utilise un inline itemrenderer):


    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
     
    <?xml version="1.0" encoding="utf-8"?>
     
    <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"  width="700" height="465" styleName="vue">
     
     
        <mx:Script>
    	    <![CDATA[
    	    import mx.controls.dataGridClasses.DataGridColumn;
    		import mx.collections.ArrayCollection;
    		[Bindable] public var paliers:ArrayCollection;
     
    		private function sendEventOk():void{
    			// comment je récupère les valeurs des checkbox ?
    			// ma collection paliers n'est pas à jour par rapport à la saisie
    		}
     
    	    ]]>
    	</mx:Script>
    	<mx:Button x="318" y="416" label="Ok" click="sendEventOk()"/>
    	<mx:DataGrid x="82" y="221" width="350"  height="140" dataProvider="{itemAC}">
    		<mx:columns>
    			<mx:DataGridColumn headerText="Palier" dataField="libelle" width="150"/>
     
    			<mx:DataGridColumn headerText="selectionné" dataField="selection" width="50">
    				<mx:itemRenderer>
    					<mx:Component>
    						<mx:CheckBox  alpha="0.7">
    						</mx:CheckBox>
    					</mx:Component>
    				</mx:itemRenderer>
    			</mx:DataGridColumn>
     
    		</mx:columns>
    	</mx:DataGrid>
     
    </mx:Canvas>
    donc lorsque l'utilisateur clique sur ok, comment je récupère les valeurs des checkbox, ma collection "paliers" n'étant pas à jour par rapport à la saisie ?
    Bref comment accéder aux valeurs saisies par l'utilisateur/visible à l'IHM ?
    j'espère que je suis plus claire !!!
    merci !!!
    Pascale38

  9. #9
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    en affectant un id à ta checkbox, puis la propriété selected t'indiquera l'état de ta checkbox , c'est bien ca ton soucis?

    as tu lu et analysé mon article sur les itemRenderer d'un dataGrid? parce qu'il t'aidera beaucoup je pense, dans mon article les images peuvent assimilé à tes checkbox

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Points : 79
    Points
    79
    Par défaut
    Heu je comprends pas très bien en quoi rajouter un id va m'aider à mettre à jour ma collection ?
    j'ai bien étudié ton blog et ton exemple, mais toi tu n'as pas à "sauvegarder" des données modifiées par un utilisateur.
    Peut être que je m'explique très mal : j'ai une collection en entrée qui est dans le dataprovider de mon datagrid (un champ texte + une checkbox).
    L'affichage se fait correctement. Je coche ou décoche les checkbox, mais la collection ne se met pas à jour, je ne sais donc pas comment récupérer les valeurs affichées pour pouvoir les sauvegarder.

  11. #11
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    tu souhaites modifié la source de donnée lors du click sur la checkbox donc tu captes cet événement, puis tu modifies dans son handler ta source(ton ArrayCollection) comme tu le souhaites (removeItem, addItem,...) .

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Points : 79
    Points
    79
    Par défaut
    hum bon je suis pas assez à l'aise en fait pour retouver dans mon dataprovider le bon objet à mettre à jour.
    Mais finallement j'ai trouvé une solution bien plus simple !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <mx:itemRenderer>
         <mx:Component>
              <mx:CheckBox click="data.selection=!data.selection" selected="{data.selection}"/>            
          </mx:Component>                        
    </mx:itemRenderer>
    et voilà mon dataprovider est mis à jour au fur et à mesur des modifs !
    Je crois que parfois c'est trop simple alors la réalité nous échappe

    en tout cas mille merci pour ton aide Jim_Nastiq !!!

    Pascale
    (pourquoi faire simple quand on peut faire compliqué ?!!!)

  13. #13
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    ta solution est celle que je venais de décrire, elle est simple en effet, il suffisait de savoir ce que tu souhaitais modifier sur ta source . Donc ce n'est pas une solution différente de celle dont je parlais , tu le fais par MXML mais cela revient exactement au meme que de le faire directement en AS

    PS: pense au tag résolu (je l'ai fait pour toi cette fois ci )

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Points : 79
    Points
    79
    Par défaut
    oups bon ben j'avais pas du tout compris ça (je débute hein, fo pas m'en vouloir, c'est encore flou...)
    en tout cas merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

    par contre je sais pas s'il faut vraiment mettre le post à résolu vu qu'en fait à la base c'était pas ça le problème....???

  15. #15
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    a toi de voir si ton problème est résolu , tu es la seule à pouvoir trancher! Si ton problème initiale a trouver une solution, même alternative, on peut considérer que c'est résolu! A toi de voir si ton besoin initial est couvert

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

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

Discussions similaires

  1. Ajouter des lignes dans un datagrid
    Par gibea00 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/07/2007, 13h20
  2. [SQL-VBA]fusionner des lignes
    Par shagun dans le forum Requêtes et SQL.
    Réponses: 42
    Dernier message: 13/04/2007, 13h37
  3. [C# 1.1] Comment fusionner des cellules dans un datagrid ?
    Par absolute_beginner dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/11/2006, 16h45
  4. Changement de couleur des lignes d'un DATAGRID
    Par 2506LE dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/07/2006, 10h48
  5. C# Changement de couleur des lignes d'une datagrid
    Par Depteam1 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 11/06/2006, 10h31

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