2011-08-02 4 views

Répondre

3

Flex (dans ma compréhension) ne fournit pas directement ce. Vous avez quelques options.

De toute façon, vous devrez peut-être organiser vos données dans un modèle hiérarchique. (Parent avec 3 enfants semble décrire votre question)

La première option que je vois impliquerait directement la déclaration de vos données comme hiérarchique à la advanceddatagrid. Si vous recherchez hiérarchique advanceddatagrid, vous devriez être capable de trouver des tutoriels en ligne. Vous pouvez également souhaiter que les données s'affichent toujours, et pas seulement lorsque vous développez le parent. Dans ce cas, vous aurez toujours besoin du modèle hiérarchique, mais vous devrez créer un itemrenderer personnalisé capable de représenter toutes les données enfants pour un objet parent. (un itemrenderer avec trois étiquettes dans un VBox/VGroup fonctionnerait pour l'exemple que vous avez donné)

Si cela ne vous aide pas, ou si vous souhaitez plus de détails sur une solution ou l'autre, n'hésitez pas à demander en un commentaire.

EDIT ::

À titre d'exemple de l'itemRenderer, voici la source d'un itemRenderer similaire, je l'ai utilisé. (Le mien Remplit seulement deux étiquettes, mais vous devriez être en mesure de le prolonger si vous comprenez ce qu'il fait)

<VBox xmlns:mx="http://www.adobe.com/2006/mxml" 
    implements="mx.controls.listClasses.IDropInListItemRenderer" 
    width="100%" height="100%" 
    verticalGap="0" paddingTop="5" paddingBottom="5" 
    horizontalScrollPolicy="off" 
    horizontalAlign="center"> 

    <mx:Script> 
     <![CDATA[ 
      import mx.controls.Label; 
      import mx.controls.dataGridClasses.DataGridListData; 
      import mx.controls.listClasses.BaseListData; 

      private var _listData:BaseListData; 

      [Bindable("dataChange")] 

      // Define the getter method. 
      public function get listData():BaseListData 
      { 
       return _listData; 
      } 
      // Define the setter method, 
      public function set listData(value:BaseListData):void 
      { 
       _listData = value; 
      } 

     override public function set data(value:Object):void 
     { 
      removeAllChildren(); 

      if (value != null) 
      { 
       var myListData:DataGridListData = DataGridListData(listData); 

       var lLabel1:Label = new Label(); 
       var lLabel2:Label = new Label(); 


       lLabel1.text = value[myListData.dataField][0]; 
       lLabel1.percentWidth = 0; 
       addChild(lLabel1); 

       lLabel2.text = value[myListData.dataField][1]; 
       lLabel2.percentWidth = 0; 
       addChild(lLabel2); 
      } 

     } 
     ]]> 
    </mx:Script> 
</VBox> 

J'ai retiré beaucoup de code propriétaire, donc si elle ne fait pas de sens laissez-moi connaître. Ceci est destiné à être réutilisable, d'où la valeur [myListData.dataField], mais si vous le souhaitez, vous pouvez facilement le rendre plus spécifique en définissant les champs vous-même. Ce code particulier attend les données dans le format suivant, par exemple:

value[field][0] = "text1"; 
value[field][1] = "text2"; 

objet a:

var field:Array = []; 

field[0] = "text1"; 
field[1] = "text2"; 
+3

+1 La seule façon d'obtenir la fonctionnalité que vous cherchez est d'utiliser un 'AdvancedDataGrid 'avec' HierarcichalData'. –

+0

La suggestion est bonne, mais je dois montrer du texte vertical dans les cellules fusionnées, je me demande si je peux utiliser itemRenderer dans ce cas. –

+1

J'ai joint un exemple de code, @Mr. G. Faites-moi savoir si cela vous aide ou si vous voulez un peu plus. –