0

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>

私の現在のコードでは、すべてのシリーズを XMLList に取得することができます。次に、次のようなことができるネストされたデータグリッド クラスがあります。

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

ただし、これはデータグリッドを 2 行で表示します。最初の行の Series 列には 1 があり、2 つのファイルは同じ行の 2 番目のセルに詰め込まれています。2 番目の行は同じですが、[シリーズ] 列に番号 2 があり、2 つのシリーズ #2 ファイルがその隣のセルに詰め込まれています。

ネストされたデータ クラスを使用しない場合は、代わりに Series.file を使用してファイルを取得でき、4 つのファイルすべてが正しく一覧表示されますが、それぞれのシリーズ番号を取得できません...

4

1 に答える 1

1

xmlの現在の構造では、2列のグリッドで表現する方が簡単です。最初の列はシリーズ番号で、2番目の列はファイルの詳細を表示する別の2列または3列のDataGridです。ただし、構造を変更したくない場合は、次のコードが必要です。dataFieldプロパティが設定されていないsortCompareFunctionため、シリーズ番号に基づいてグリッドを並べ替えるためのを指定する必要があることに注意してください。そうしないと、並べ替え中に例外がスローされる可能性があります。

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

アップデート:

<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
于 2009-10-20T04:47:44.027 に答える