Вопрос

Я пытаюсь отобразить список элементов в сетке данных из 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>

Однако при этом отображается сетка данных с двумя строками: первая строка имеет 1 в столбце «Серия», а затем два файла втиснуты во вторую ячейку в той же строке.Вторая строка такая же, но в столбце «Серия» указана цифра 2, а в ячейке рядом с ней втиснуты два файла серии №2.

Если я не использую вложенный класс данных, я могу вместо этого извлечь файлы, используя Series.file, и все 4 файла в списке правильно, однако я не получаю номер серии для каждого...

Это было полезно?

Решение

С текущей структурой XML его проще представить с помощью сетки из двух столбцов: первый столбец представляет собой номер серии, а второй столбец представляет собой еще один столбец DataGrid с 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