/ / Popolamento di un Datagrid con numero variabile di colonne e righe in Flex - flex, actionscript-3, actionscript, flexbuilder

Compilazione di un Datagrid con numero variabile di colonne e righe in Flex-flex, actionscript-3, actionscript, flexbuilder

Sto cercando di capire come gestire un Datagrid basato su un oggetto XML come questo:

<matrix rows="5" columns="5">
<column>
<row>0.5</row>
<row>0.21</row>
</column>
<column>
<row>0.6</row>
<row>0.9</row>
</column>
<column>
<row>0.5</row>
<row>0.5</row>
</column>
<column>
<row>0.8</row>
<row>0.4</row>
</column>
</matrix>

Dovrò popolare i nomi delle colonne di Datagridbasato su un oggetto XML diverso e utilizzare l'XML sopra per popolare ciascuna delle righe della colonna. Attualmente sono in grado di creare Datagrid e popolare le intestazioni delle colonne ma non sono sicuro su come aggiungere le righe per ogni colonna L'XML di cui sopra verrà aggiornato con nuovi elementi di riga e colonna aggiunti ed eliminati, questo ovviamente sarà associato a Datagrid per mostrare gli aggiornamenti.

risposte:

1 per risposta № 1

È necessariamente vero che i dati della riga sono figliodella colonna? In questo caso dovrai prima trasformare i dati. DataGrid in Flex e Table in HTML si basano sulla convenzione di database con righe come singoli record, non colonne.

Se chi / qualunque cosa stia fornendo i dati si rifiuta di conformarsi a questo, sarebbe meglio manipolare i dati per adattarli al controllo della vista piuttosto che viceversa, che è quello che sembra fare ora.


1 per risposta № 2

Le righe di un datagrid saranno dinamiche. Verrà popolato in base al numero di elementi nel fornitore di dati. Ma per rendere dinamiche le colonne devi farlo usando AS.

Datagrid ha una proprietà chiamata "colonne". questo contiene gli oggetti DataGridColumn per quel datagrid. È possibile controllare il dataprovider e aggiungere o rimuovere DatagridColumns nell'array "colonne".

var cols:Array = [];
for(var i:int = 0;i<dataProvider.length;i++)
{
var DGCol:DataGridColumn = new DataGridColumn();
DGCol.dataField = "data1";
cols.push(DGCol);
}
myDg.columns = cols;