0

XMLListCollectionデータが入力されたadvancedDataGridがあります。そのXMLListCollectionをフィルタリングしようとしていますが、ADGに反映されていません。私のすべてのテストは、データをフィルタリングしていることを示しています。誰かが手を貸してもらえますか?

//
        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 (item.@isStory == "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>
4

1 に答える 1

1

問題は、myXMLListをフィルタリングしていることです。ただし、dataProviderは、myXMLListに基づく新しい変数です。したがって、同じデータの2つの独立したインスタンスがあり、間違ったインスタンスをフィルタリングしています。

これは1つの解決策かもしれません:

    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();
    }
于 2011-04-22T19:52:33.657 に答える