【问题标题】:Flex 4 - filtering XMLListCollection in AdvancedDataGridFlex 4 - 在 AdvancedDataGrid 中过滤 XMLListCollection
【发布时间】:2011-04-22 19:26:16
【问题描述】:

我有一个用 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>

【问题讨论】:

    标签: apache-flex flex4 filtering advanceddatagrid xmllist


    【解决方案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();
        }
    

    【讨论】:

      猜你喜欢
      • 2011-01-01
      • 1970-01-01
      • 2012-05-30
      • 2011-07-08
      • 2010-12-15
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多