2010-07-15 3 views
3

У меня есть AdvancedDataGrid, который заполняется данными клиента. Каждый клиент имеет 3 ежемесячных продукта (1, 3, 6), а также поле passed, определяющее, соответствует ли клиент для любого из ежемесячных продуктов.Flex AdvancedDataGrid sort

Теперь сетка сортирует данные клиента в алфавитном порядке, что хорошо, но это не сортировка ежемесячных продуктов, не очень хорошая вещь.

DataProvider выглядит примерно так. (Я группировка по Funder.)

{Funder:"Customer1", Product:"1 Month", Passed:"False"}, 
{Funder:"Customer1", Product:"3 Month", Passed:"True"}, 
{Funder:"Customer1", Product:"6 Month", Passed:"True"}, 
{Funder:"Customer2", Product:"1 Month", Passed:"False"}, 
{Funder:"Customer2", Product:"3 Month", Passed:"False"}, 
{Funder:"Customer2", Product:"6 Month", Passed:"False"} 

Тогда результаты, которые я получаю в сетке выглядит что-то вроде этого

---------------------------------------- 
| Funder & Products | Product Passed | 
---------------------------------------- 
| Customer1   |     | 
| 6 Month   | True   | 
| 3 Month   | True   | 
| 1 Month   | False   | 
| Customer2   |     | 
| 3 Month   | False   | 
| 6 Month   | False   | 
| 1 Month   | False   | 
---------------------------------------- 

Любой помощи на получение продуктов, отсортированные а?

EDIT:

Вот код, я использую для сетки

<mx:AdvancedDataGrid id="myADG" 
        width="100%" height="100%" 
        initialize="gc.refresh();" 
        folderClosedIcon="{null}" 
        folderOpenIcon="{null}" 
        defaultLeafIcon="{null}"> 

    <mx:dataProvider> 
     <mx:GroupingCollection id="gc" source="{mCustomerData}"> 
      <mx:grouping> 
       <mx:Grouping> 
        <mx:GroupingField name="Funder"/> 
       </mx:Grouping> 
      </mx:grouping> 
     </mx:GroupingCollection> 
    </mx:dataProvider>   

    <mx:columns> 
     <mx:AdvancedDataGridColumn dataField="Product" 
            headerText="Funder &amp; Products"/> 
     <mx:AdvancedDataGridColumn dataField="Passed" 
            headerText="Product Passed"/> 
     <mx:AdvancedDataGridColumn dataField="Passed" 
            headerText="Product Failed"/> 
    </mx:columns> 
</mx:AdvancedDataGrid> 

ответ

3

Хорошо, поэтому я нашел решение, которое работает для меня. Отсюда следует.

В принципе, на creationComplete Я вызываю функцию sortData, которая выполняет следующие действия.

private function sortData():void { 
    var sort:Sort = new Sort(); 
    var sortField:SortField = new SortField("Product"); 

    sort.fields = [sortField];  // Set 'Product' as the field to be sorted on 
    myADG.dataProvider.sort = sort; // Add the sort to the dataProvider of the dataGrid 
    gc.source.refresh();    // Refresh the GroupCollection 
} 

Надежда увидеть еще один способ сделать это, так как я не могу думать, что это единственный способ сделать это

1

Для всех намерений и целей, Энергосистема не сортирует данные. Он просто отображает данные, которые вы предоставляете, в указанном вами порядке. DataProvider должен быть отсортирован вами, и сетка будет соответствующим образом обновляться.

Если вы сортировки, нажав на заголовки столбцов, а затем взгляните на sortCompareFunction на AdvancedDataGridColumn

Если вы используете ArrayCollection или XMLListCollection, а затем взгляните на это documentation о том, как сортировать Это.

+0

Я знаю, что сетка не сортирует данные для вас. Дело в том, что данные сортируются, и сетка отображает их в случайной последовательности. Мне нужен был способ правильно отобразить данные. Спасибо за предложение sortCompareFunction, попробовал это, но он не работал. –

+0

С вашего вопроса «сетка сортирует данные клиента». Мне трудно поверить, что сетка делает какие-то данные в ваших данных. функция sortCompareFunction будет влиять только на то, если вы нажмете один из заголовков для сортировки ваших данных. Ваше решение применить сортировку к данным на createComplete кажется прекрасным. Раньше вы не применяли сортировку к данным? – JeffryHouser

+0

Нет, я раньше не применял сортировку, но данные отсортированы в алфавитном порядке, даже если они не отсортированы в dataProvider. Полагаю, это могла быть группировка, которая в алфавитном порядке передавала данные? –

1

бы точно такую ​​же проблему и нашел решение на веб-сайте компании Adobe:

How to sort items within group in AdvancedDataGrid

Вы можете написать функцию сравнения и использовать ее в поле группировки.

Смежные вопросы