2012-11-02 2 views
-1

Flash Builder 4.6을 사용하여 arrayCollection을 정렬하려고합니다. 배열에는 2 개의 속성 상태와 help_id가 있습니다. 배열의 모든 "열기"상태를 "읽기"보다 "온 사이트"보다 "완료"보다 정렬되도록 정렬하고 싶습니다. 이 작업을 수행하는 함수를 만들었지 만 동일한 상태의 모든 항목을 help_id 속성에 의해 가장 먼저 가장 낮은 우선 순위로 정렬하는 것이 좋습니다.compareFunction을 사용하여 ArrayCollection을 정렬합니다.

이것은 상태를 정렬하는 코드입니다.

[Bindable]protected var myHelp:ArrayCollection = new ArrayCollection(); 

정렬 기능 : 어떤 도움이 많이 주시면 감사하겠습니다

function sortFunction(a:Object, b:Object, array:Array = null):int 
       { 

        var status:Array = ["open", "read", "onsite","complete", "reopen", "closed"]; 
        var aStatus:Number = status.indexOf(a.status); 
        var bStatus:Number = status.indexOf(b.status); 
        if(aStatus == -1 || bStatus == -1) 
         throw new Error("Invalid value for criticality "); 
        if(aStatus == bStatus) 
         return 0; 
        if(aStatus > bStatus) 
         return 1; 
        return -1; 
       } 
       var sort:Sort = new Sort(); 
       sort.compareFunction = sortFunction; 
       myHelp.sort = sort; 
       myHelp.refresh(); 

.

+0

문제가 무엇인지 알려주면; 왜 당신의 접근 방식이 효과가 없었던 지 우리는 당신이 그것을 해결할 수 있도록 더 잘 적응할 수 있습니다. – JeffryHouser

+0

내가 당신에게 보여준 것은 완벽하게 작동합니다. 나는 단지 같은 상태에 두 번째 정렬을하고 싶다. 마치 2 개의 상태가 닫히면 맨 위에 표시 할 help_id가 더 높은 help_id를 갖고 싶습니다. (myHelp arrarCollection에는 myHelp.status (string) 및 myHelp.help_id (int)가 두 번 표시됩니다. – user1535213

답변

0

배열에서 문자열 인덱스를 찾는 대신 두 가지 모두에 대해 ints를 사용하지 않는 이유는 무엇입니까? 다음 동시에 help_id

var sort:Sort = new Sort(); 
sort.fields = [new SortField("status", true, true), new SortField("help_id", true, true)]; 
myHelp.sort = sort; 
myHelp.refresh(); 

이 상태별로 정렬 할 것이다 : 당신의 코드에서, 당신은 등 StatusType.OPEN 같은 상수를 참조 할 수 ... 다음 코드처럼 볼 수 있었다. 그런 다음 GUI에서 사용자에게 상태를 표시해야 할 때 int를 문자열로 읽을 수있는 문자열로 변환하십시오.

관련 문제