Question

Je suis en train d'afficher une liste d'éléments dans une grille de données à partir d'un XMLList.

<Series no="1">
    <file>
        <filenum>1</epnum>
        <prodnum>4V01</prodnum>
        <title>Series #1 - File #1</title>
    </file>
    <file>
        <filenum>2</epnum>
        <prodnum>4V02</prodnum>
        <title>Series #1 - File #2</title>
    </file>
</Series>
<Series no="2">
    <file>
        <filenum>1</epnum>
        <prodnum>4V01</prodnum>
        <title>Series #2 - File #1</title>
    </file>
    <file>
        <filenum>2</epnum>
        <prodnum>4V02</prodnum>
        <title>Series #2 - File #2</title>
    </file>
</Series>

Mon code actuel me permet de récupérer toutes les séries dans un XMLList puis-je avoir une classe nesteddatagrid qui me permet de faire des choses comme.

<classes:NestedDataGrid width="100%" height="100%" id="gridFiles" dataProvider="{filesList}" >
<classes:columns>
<mx:DataGridColumn headerText="Season" dataField="@no" width="60"/>
<mx:DataGridColumn headerText="Episode" dataField="file.filenum" width="60"/>
<mx:DataGridColumn headerText="Title" dataField="file.title"/>
</classes:columns>
</classes:NestedDataGrid>

Cependant, cette affiche la grille de données à deux rangées, la première rangée comporte une série dans la colonne, puis les deux fichiers entassés dans la deuxième cellule dans la même rangée. La deuxième ligne est la même, mais a le numéro 2 dans la colonne de la série et les deux séries de fichiers # 2 entassées dans la cellule à côté.

Si je ne pas utiliser la classe de données imbriquées je peux tirer les fichiers à l'aide Series.file à la place et tous les 4 correctement la liste des fichiers, mais je ne suis pas le numéro de série pour chaque ...

Était-ce utile?

La solution

Avec la structure actuelle du xml, il est plus facile de le représenter par une grille à deux colonnes - la première colonne étant le numéro de série, et la seconde colonne étant un autre 2 ou 3 DataGrid de colonne qui affiche les détails du fichier. Mais si vous ne voulez pas changer la structure, le code suivant est ce que vous avez besoin. Notez que depuis la propriété de dataField n'est pas définie, vous devez spécifier un sortCompareFunction pour le tri de la grille en fonction du nombre de séries -. Sinon il pourrait lancer des exceptions tout en essayant de trier

<classes:NestedDataGrid width="100%" height="100%" id="gridFiles" 
  dataProvider="{filesList.Series.file}" >
  <classes:columns><!-- classes copy pasted from OP's code. Whats that? -->
    <mx:DataGridColumn headerText="Season" labelFunction="getSeries" width="60"/>
    <mx:DataGridColumn headerText="Episode" dataField="filenum" width="60"/>
    <mx:DataGridColumn headerText="Title" dataField="title"/>
  </classes:columns>
</classes:NestedDataGrid>
private function getSeries(item:Object, col:DataGridColumn):String
{
  return XML(item).parent().@no;
}

Mise à jour:

<mx:DataGrid width="100%" height="100%" id="gridFiles" > 
  <mx:columns>
    <mx:DataGridColumn headerText="Season" labelFunction="getSeries" width="60"/>
    <mx:DataGridColumn headerText="Episode" dataField="epnum" width="60"/>
    <mx:DataGridColumn headerText="Title" dataField="title"/>
  </mx:columns>
</mx:DataGrid>

gridFiles.dataProvider = XML(event.result).descendants('episode');
//use the same getSeries function as above
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top