Pregunta

Estoy tratando de mostrar una lista de elementos en una cuadrícula de datos de un objeto 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>

Mi código actual me permite recuperar todas las series en un XMLList y luego tengo una clase nesteddatagrid que me permite hacer cosas similares.

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

Sin embargo, esto muestra la cuadrícula de datos con dos filas, la primera fila ha 1 en la columna de la serie y luego los dos archivos embutida en la segunda celda en la misma fila. La segunda fila es el mismo, pero tiene el número 2 en la columna de la serie y las dos series # 2 archivos hacinados en la celda contigua a la misma.

Si yo no uso la clase de datos anidada puedo tirar de los archivos usando Series.file lugar y los 4 de los archivos de lista correctamente, sin embargo no consigo el número de serie para cada ...

¿Fue útil?

Solución

Con la estructura actual de la xml, es más fácil para que la represente con una rejilla de dos columnas - siendo la primera columna el número de serie, y siendo la segunda columna otro 2 o 3 columna DataGrid que los datos de archivo se muestra. Pero si no quiere cambiar la estructura, el siguiente código es lo que necesita. Tenga en cuenta que puesto que la propiedad dataField no está definida, tiene que especificar un sortCompareFunction para la clasificación de la red basada en el número serie -. De lo contrario podría lanzar excepciones al tratar de clasificar

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

ACTUALIZACIÓN:

<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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top