2011-04-22 4 views
0

XMLListCollection 데이터로 채워진 advancedDataGrid가 있습니다. 그 XMLListCollection을 필터링하려고하는데 ADG에서 다시 변환하지 않습니다. 내 모든 테스트는 데이터를 필터링하고 있음을 나타냅니다. 누군가가 손을 빌려줄 수 있습니까 ??Flex 4 - AdvancedDataGrid의 XMLListCollection 필터링

// 
     private function isStory_changeHandler(event:Event):void { 
      if (event.currentTarget.selected) { 
       myXMLList.filterFunction = filterArray; 
       trace("filter"); 
      } else { 
       myXMLList.filterFunction = null; 
       trace("don't filter"); 
      } 
      trace(myXMLList.length); 
      myXMLList.refresh(); 
     } 
     private function filterArray(item:XML):Boolean { 
      var isMatch:Boolean = false; 
      if ([email protected] == "True") { 
       isMatch = true; 
      } 

      return isMatch; 
     } 
     // 

    <mx:AdvancedDataGrid id="mainADG" width="100%" height="100%" dataProvider="{new HierarchicalData(myXMLList)}" 
        draggableColumns="false" 
        itemClick="mainADG_itemClickHandler(event)" 
        doubleClickEnabled="true" itemDoubleClick="mainADG_itemDoubleClickHandler(event)" 
        horizontalGridLines="true" horizontalGridLineColor="#666666" 
        defaultLeafIcon="{null}" folderClosedIcon="{null}" folderOpenIcon="{null}" 
        disclosureClosedIcon="{plus}" disclosureOpenIcon="{minus}" 
        variableRowHeight="true" wordWrap="true" 
        > 

    <mx:groupedColumns> 
     <mx:AdvancedDataGridColumn headerText="Document title" dataField="@title" fontWeight="bold"/> 
     <mx:AdvancedDataGridColumn headerText="Story title" dataField="@isStory" fontWeight="bold"/> 
     <mx:AdvancedDataGridColumn headerText="Author" dataField="@author" fontWeight="bold"/> 
     <mx:AdvancedDataGridColumn headerText="Publication date" dataField="@pubDate" fontWeight="bold"/> 

     <mx:AdvancedDataGridColumnGroup headerText="Tags" sortable="false" > 
      <mx:AdvancedDataGridColumn headerText="Name" dataField="@name" sortable="false"/> 
      <mx:AdvancedDataGridColumn headerText="Type" dataField="@type" sortable="false"/> 
     </mx:AdvancedDataGridColumnGroup> 

    </mx:groupedColumns> 
</mx:AdvancedDataGrid> 

답변

1

문제점은 myXMLList를 필터링한다는 것입니다. 그러나 dataProvider는 myXMLList에 기반한 새로운 변수입니다. 따라서 동일한 데이터에 대해 두 개의 독립 인스턴스가 있으며 잘못된 데이터를 필터링합니다.

이 하나의 해결책이 될 수 있습니다 :

private function isStory_changeHandler(event:Event):void { 
     if (event.currentTarget.selected) { 
      mainADG.dataProvider.filterFunction = filterArray; 
      trace("filter"); 
     } else { 
      mainADG.dataProvider.filterFunction = null; 
      trace("don't filter"); 
     } 
     trace(mainADG.dataProvider.length); 
     mainADG.dataProvider.refresh(); 
    } 
+0

딱! 그게 .. 고마워. –