2012-10-10 6 views
2

의 객체를 HierarchicalData 객체의 소스로 사용하고 있습니다. 내 목적은 다음과 같이 대략 같습니다 나는 그룹화 된 형식으로 데이터를 표시하기 위해 AdvancedDataGrid에 HierarchicalData을 사용하고Flex : HierarchicalData 하위 행 필터링

ObjectName (String) 
SubCollection (ArrayCollection) 

.

filterFunction을 사용하여 ArrayCollection의 데이터를 필터링 할 수 있습니다. 이제 수행 할 작업은 SubCollection의 레코드도 필터링하여 필터와 일치하는 항목 만 AdvancedDataGrid에 표시되도록하는 것입니다.

아무도 내가 HierarchicalData의 자식 행을 필터링 할 수있는 방법을 말해 줄 수 있습니까?

+0

재귀 그것을 통해 루프 각 하위 컬렉션에 filterFunction의 적용. – RIAstar

+0

@RIAstar 그 일을 시도했습니다. 디버깅하는 동안'SubCollection'은 필터링 된 후에 올바른 수의 항목을 가지고 있지만'AdvancedDataGrid'는 여전히 항목의 전체 목록을 보여줍니다. 어떤 제안? –

+0

컬렉션과 같은 사운드가 뷰와 같이 새로 고쳐지지 않습니다. 'AdvancedDataGrid'는 로얄 PITA가 될 수 있습니다 (글쎄, 대부분의 경우 실제로). – RIAstar

답변

2

This answer 귀하의 질문에 대한 직접적인 대답은 아니지만 일부 배경에 도움이됩니다. 본질적으로 나는 당신과 같은 위치에 있는데, 내가 가지고있는 부모 노드의 유형에 따라 특정한 데이터 세트를 보여줄 필요가있다.

HierarchicalData.getChildren(node:Object):Object에 대한 재정의로 시작하여 첫 번째 수준 하위 항목을 필터링 할 수 있으며 하위 하위 항목에 대해 필터링 된 메서드를 n 번째 수준으로 호출 할 수도 있습니다.

그런 다음 확장 클래스를 ADG의 소스로 사용합니다.

의사 코드 예 :

Class MyCollection extends HierarchicalData 

override public function getChildren(node:Object):Object 
{ 
    if (node is a TopLevelObject) 
     (node.children as ArrayCollection).filterFunction = filterSub; 
     node.children.refresh(); 
    else if (node is a SubCollectionObject) 
     (node.children as ArrayCollection).filterFunction = filterGrandChildren; 
     node.children.refresh(); 

    // - OR - 
     //a more complex process of allowing the sub-node to determine it's filter 
     return node.filterSubCollectionGrandChildren(); 


    return node; 
} 
+0

마이크, 너는 남자 야! 당신의 답은 좌절의 많은 시간 후에 올바른 방향으로 나아갔습니다. 고맙습니다. –

+0

당신은 환영합니다;) –

+0

내가 더 좋은 질문이 하나 더 있습니다. 귀하의 대답은 제가 원했던 필터링 결과를 얻는데 도움이되었지만, 지금은'AdvancedDataGrid'의'expandAll()'과'collapseAll()'메소드를 사용하여 이슈를 다루고 있습니다. 전에 이것에 빠지셨습니까? –