我试图从一个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,然后我有一个nesteddatagrid类,允许我做这样的事情。

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

然而,该显示具有两行数据网格中,第一行中的系列列有1个,然后将两个文件塞进相同行中的第二小区。第二行是相同的,但具有在系列列中的数字2和两个系列#2的文件塞进细胞旁的。

如果我不使用嵌套数据类,我可以使用Series.file代替拉的文件和文件的所有4个正确列出,但我不明白每个...

的系列号
有帮助吗?

解决方案

使用的XML的当前结构,很容易用两柱网来代表它 - 第一列是所述序列号,和第二列是另一个2或3列数据网格该显示文件的详细信息。但是,如果你不想改变结构,下面的代码是你所需要的。注意,由于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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top