2010-10-20 24 views
0

Je suis actuellement en train d'essayer de remplir un flexible 3 AdvancedDatagrid avec xml reçu d'un HTTPService avec id="produktMatrix_data". La disposition est la suivante: http://pastebin.com/NqFqgj86 Le résultat devrait ressembler à: adg Les lignes supplémentaires comme KID, M .., etc. seront peuplées par d'autres sources, seront codées en dur, ou par l'entrée de l'utilisateur et sont hors de portée de cette question . Mon code pour le AdvencedDataGrid est la suivante:Flex AdvancedDatagrid remplissant avec groupingCollection basé sur xml

<mx:AdvancedDataGrid dataProvider="{matrixProvider}"> 
<mx:columns> 
    <mx:AdvancedDataGridColumn headerText="Zielprodukt" dataField="prod_txt" editable="false" >    
    </mx:AdvancedDataGridColumn>       
    <mx:AdvancedDataGridColumn headerText="KID" dataField="kid" editable="true" editorDataField="selectedItem" > 
    </mx:AdvancedDataGridColumn> 
    <mx:AdvancedDataGridColumn headerText="MVLZ-Bezug" dataField="mvlz_bez" > 
    </mx:AdvancedDataGridColumn> 
    <mx:AdvancedDataGridColumn headerText="MVLZ-Dauer" dataField="mvlz_dauer"> 
    </mx:AdvancedDataGridColumn> 
    <mx:AdvancedDataGridColumn headerText="MVLZ-Einheit" dataField="mvlz_einheit"> 
    </mx:AdvancedDataGridColumn> 
    <mx:AdvancedDataGridColumn headerText="Status" dataField="status" editable="true"> 
    </mx:AdvancedDataGridColumn> 
    <mx:AdvancedDataGridColumn headerText="Prämierung" dataField="praemie" editable="true"> 
    </mx:AdvancedDataGridColumn> 
    <mx:AdvancedDataGridColumn headerText="Gültig ab" dataField="datum_ab" editable="true"> 
    </mx:AdvancedDataGridColumn> 
    <mx:AdvancedDataGridColumn headerText="Gültig bis" dataField="datum_bis" editable="true"> 
    </mx:AdvancedDataGridColumn> 
</mx:columns> 

Le dataProvider est codé:

<mx:GroupingCollection id="matrixProvider" source="{produktMatrix_data.lastResult.result.pos.entry}" childrenField="undefined"> 
    <mx:Grouping> 
     <mx:GroupingField name="portfolio"/> 
     <mx:GroupingField name="layer"/> 
     <mx:GroupingField name="cluster"/> 
     <mx:GroupingField name="prod_txt"/> 
    </mx:Grouping> 
</mx:GroupingCollection> 

Mais cela ne remplit pas le AdvancedDataGrid. Alors, comment dois-je modifier mon code pour le faire fonctionner? Ou devrais-je choisir une approche complètement différente?

Répondre

2

Il y a en fait un très bon exemple de ce sur le site LiveDocs:

http://livedocs.adobe.com/flex/3/html/help.html?content=advdatagrid_08.html

Fondamentalement, il vous a mis l'GroupingCollection à l'intérieur du DataGrid, qui (copier/coller) ressemble à ceci:

<mx:AdvancedDataGrid id="myADG" 
     width="100%" height="100%" 
     initialize="gc.refresh();">   
     <mx:dataProvider> 
      <mx:GroupingCollection id="gc" source="{dpFlat}"> 
        <mx:Grouping> 
         <mx:GroupingField name="Region"/> 
         <mx:GroupingField name="Territory"/> 
        </mx:Grouping> 
      </mx:GroupingCollection> 
     </mx:dataProvider>   

     <mx:columns> 
      <mx:AdvancedDataGridColumn dataField="Region"/> 
      <mx:AdvancedDataGridColumn dataField="Territory"/> 
      <mx:AdvancedDataGridColumn dataField="Territory_Rep" 
       headerText="Territory Rep"/> 
      <mx:AdvancedDataGridColumn dataField="Actual"/> 
      <mx:AdvancedDataGridColumn dataField="Estimate"/> 
     </mx:columns> 
    </mx:AdvancedDataGrid> 
+0

J'ai dû ajouter matrixProvider.refresh() à la fonction qui appelle produktMatrix_data.send(). Maintenant ça marche. Au début, je pensais que cela n'avait pas d'importance, que la collection de regroupement soit construite dans le dataProvider ou utilisée via la liaison de données. – omnibrain

+1

Lors de l'utilisation d'une collection de regroupement, vous devrez mettre à jour le dataProvider via l'actualisation, sinon la plupart des fournisseurs de données fonctionnent comme prévu, la simple mise à jour mettra à jour tout ce à quoi ils sont liés. Les Advanced Data Grids ne sont pas mes meilleurs amis. – Organiccat