天天看點

Sorting and filtering data in an XMLListCollection

The following code is a brief example of sorting a Flex XMLListCollection using the Sort and SortField classes, and the <code>XMLListCollection.sort</code> property. We also look at filtering the XMLCollection using a custom filter function.

&lt;?xml version="1.0" encoding="utf-8"?&gt;

&lt;!-- http://blog.flexexamples.com/2007/08/22/sorting-and-filtering-data-in-an-xmllistcollection/ --&gt;

&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"

        layout="vertical"

        verticalAlign="middle"

        backgroundColor="white"

        creationComplete="init()"&gt;

    &lt;mx:Script&gt;

        &lt;![CDATA[

            import mx.collections.SortField;

            import mx.collections.Sort;

            import mx.controls.*;

            private function init():void {

                describeTypeXML = describeType(DataGrid);

                factoryMethodsXLC.source = describeTypeXML.factory.method;

            }

            private function sortXLC():void {

                var nameSort:Sort = new Sort();

                nameSort.fields = [new SortField('@name', true)];

                factoryMethodsXLC.sort = nameSort;

                factoryMethodsXLC.refresh();

            private function filterXLC():void {

                if (filterCh.selected) {

                    factoryMethodsXLC.filterFunction = declaredBy_filterFunc;

                    factoryMethodsXLC.refresh();

                } else {

                    factoryMethodsXLC.filterFunction = null;

                }

            private function declaredBy_filterFunc(item:XML):Boolean {

                return item.@declaredBy == describeTypeXML.@name;

        ]]&gt;

    &lt;/mx:Script&gt;

    &lt;mx:XML id="describeTypeXML" /&gt;

    &lt;mx:XMLListCollection id="factoryMethodsXLC" /&gt;

    &lt;mx:VBox&gt;

        &lt;mx:DataGrid id="factoryMethodsGrid"

                dataProvider="{factoryMethodsXLC}"

                width="400"

                rowCount="7"&gt;

            &lt;mx:columns&gt;

                &lt;mx:DataGridColumn dataField="@name" /&gt;

                &lt;mx:DataGridColumn dataField="@returnType" /&gt;

                &lt;mx:DataGridColumn dataField="@declaredBy" /&gt;

            &lt;/mx:columns&gt;

        &lt;/mx:DataGrid&gt;

        &lt;mx:HBox width="100%"&gt;

            &lt;mx:Button id="sortBtn"

                    label="Sort ({factoryMethodsGrid.dataProvider.length} items)"

                    click="sortXLC()" /&gt;

            &lt;mx:Spacer width="100%" /&gt;

            &lt;mx:CheckBox id="filterCh"

                    label="{describeTypeXML.@name} only"

                    click="filterXLC()" /&gt;

        &lt;/mx:HBox&gt;

    &lt;/mx:VBox&gt;

&lt;/mx:Application&gt;

    本文轉自 OldHawk  部落格園部落格,原文連結:http://www.cnblogs.com/taobataoma/archive/2008/01/10/1034065.html,如需轉載請自行聯系原作者