2010-07-15 5 views
3

고객 데이터로 채워지는 AdvancedDataGrid가 있습니다. 각 고객은 3 개의 월간 제품 (1, 3, 6)과 고객이 월간 제품에 대해 자격이 있는지 여부를 지정하는 passed 필드를 가지고 있습니다.Flex AdvancedDataGrid 정렬

이제 그리드가 고객 데이터를 알파벳순으로 정렬합니다. 이는 좋은 일이지만 매월 제품을 분류하는 것은 그리 좋지 않습니다.

dataProvider는 다음과 유사합니다. (나는. 펀더에 의해 그룹화하고)

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

어떤 도움 같이 보입니다?

편집 : 여기

은 그리드는 데이터를 정렬하지 않습니다, 나는 그리드의 모든 의도와 목적을 위해

<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 함수를 호출합니다.

:이 그것을

1

에 사용하는 코드입니다. 사용자가 지정한 순서대로 데이터를 표시합니다. dataProvider는 사용자에 의해 정렬되어야하며 그에 따라 그리드가 업데이트됩니다.

당신이 열 머리글을 클릭하여 정렬하는 경우 당신이있는 ArrayCollection 나 XMLListCollection에를 사용하는 경우, 다음 AdvancedDataGridColumn

sortCompareFunction 살펴보고, 다음으로 정렬하는 방법이 documentation에서보세요 그것.

+0

그리드가 데이터를 정렬하지 않는다는 것을 알고 있습니다. 문제는 데이터가 정렬되고 그리드가 임의의 순서로 표시된다는 것입니다. 데이터를 올바른 방식으로 표시하는 방법이 필요했습니다. sortCompareFunction을 제안 해 주셔서 감사합니다. 시도했지만 작동하지 않았습니다. –

+0

질문에 "그리드가 고객 데이터를 정렬하고 있습니다". 그리드가 당신의 데이터에 어떤 종류의 일을하고 있다고 나는 믿기 어렵습니다. sortCompareFunction은 머리글 중 하나를 클릭하여 데이터를 정렬하는 경우에만 영향을 미칩니다. creationComplete에서 데이터 정렬을 적용하는 솔루션이 잘된 것 같습니다. 이전에 데이터에 정렬을 적용하지 않았습니까? – JeffryHouser

+0

아니요, 이전에는 정렬을 적용하지 않았지만 데이터가 dataProvider에서 정렬되지 않아도 사전 순으로 정렬되었습니다. dataProvider를 알파벳순으로 그룹화 할 수 있다고 생각합니까? –

1

은 Adobe 웹 사이트에 솔루션을 정확히 같은 문제가 있었 발견하기의 유일한 방법이라고 생각하지 못할으로

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 
} 

희망은,이 일을 다른 방법을 볼 수 How to sort items within group in AdvancedDataGrid

비교 기능을 작성하여 그룹화 필드에 사용할 수 있습니다.

관련 문제