Frage

Ich versuche, eine Liste der Elemente in einem Datagrid von einem XMLList angezeigt werden soll.

<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>

Meine aktuellen Code ermöglicht es mir, jede Serie in ein XMLList abzurufen und dann habe ich eine nesteddatagrid Klasse, die mir Dinge tun können wie.

<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>

Allerdings Dies zeigt der Datenraster mit zwei Reihen, die erste Zeile 1 in der Serie Spalte hat und dann vollgestopft die beiden Dateien in die zweite Zelle in der gleichen Zeile. Die zweite Reihe ist die gleiche, aber hat die Nummer 2 in der Serie Spalte und die beide Serie # 2 Dateien in die Zelle neben ihm vollgestopft.

Wenn ich nicht die verschachtelten Datenklasse i die Dateien Series.file stattdessen mit ziehen und alle 4 von der Liste Dateien korrekt, aber ich nicht bekommen, die Seriennummer für jede ...

War es hilfreich?

Lösung

Mit der aktuellen Struktur des xml, ist es einfacher, es mit einem Zweispaltenraster darstellen - erste Spalte ist die Seriennummer, und die zweite Spalte ist eine weitere 2 oder 3 Spalte Datagrid, dass Dateidetails angezeigt. Aber wenn Sie wollen nicht die Struktur ändern, wird der folgende Code ist, was Sie brauchen. Beachten Sie, dass seit dataField Eigenschaft nicht festgelegt ist, müssen Sie das Raster auf Basis von Seriennummer eines sortCompareFunction angeben für die Sortierung -. Sonst könnte es Ausnahmen werfen, während zu sortieren versuchen

<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;
}

UPDATE:

<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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top