Pergunta

Estou tentando exibir uma lista de itens em um datagrid de um 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>

Meu código atual me permite recuperar todas as séries em um xmllist e, em seguida, tenho uma classe NestedDatagrid que me permite fazer coisas como.

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

No entanto, isso exibe o datagrid com duas linhas, a primeira linha tem 1 na coluna da série e, em seguida, os dois arquivos amontoaram a segunda célula na mesma linha. A segunda linha é a mesma, mas possui o número 2 na coluna da série e os dois arquivos da série nº 2 amontoados na célula ao lado dela.

Se eu não usar a classe de dados aninhados, posso puxar os arquivos usando o Série.File e todos os 4 da lista de arquivos corretamente, no entanto, não recebo o número da série para cada ...

Foi útil?

Solução

Com a estrutura atual do XML, é mais fácil representá -lo com uma grade de duas colunas - a primeira coluna sendo o número da série, e a segunda coluna sendo mais 2 ou 3 coluna Datagrid que exibe detalhes do arquivo. Mas se você não quiser alterar a estrutura, o código a seguir é o que você precisa. Observe isso desde então dataField A propriedade não está definida, você precisa especificar um sortCompareFunction Para classificar a grade com base no número da série - caso contrário, ela pode lançar exceções enquanto tentava classificar.

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

ATUALIZAR:

<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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top