2011-04-22 49 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

完美!這樣做......謝謝 – 2011-04-22 20:10:27