【问题标题】:How to get particular items count from arraycollection in flex without a loop如何在没有循环的情况下从flex中的arraycollection中获取特定项目的数量
【发布时间】:2012-11-27 10:20:53
【问题描述】:

例如:我有一个数组集合,其中包含名称、标准、年龄等。 我只想要标准“x”中的学生人数。 如何在没有循环的 flex ArrayCollection 中实现这一点。

【问题讨论】:

  • 我认为没有办法。是什么让你这么问?
  • 这听起来很奇怪。要在数组中查找某些内容,您需要循环。或者,如果您从数据库加载数据,只需返回一个包含您的条件计数的额外结果集。

标签: apache-flex arraycollection


【解决方案1】:

以下代码可能对您有所帮助:- 您可以将 filterFunction 用于 ArrayCollection。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:local="*">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;

            private var filterValue:String = "X"; 
            private var myArrayCollection:ArrayCollection = new ArrayCollection(
                   [{label:"I", data:"first std"},
                    {label:"II", data:"Second  std"},
                    {label:"III", data:"Third  std"},
                    {label:"V", data:"Fifth  std"},
                    {label:"VI", data:"Sixth  std"},
                    {label:"IX", data:"Ninth  std 1"},
                    {label:"X", data:"Tenth  std 1"},
                    {label:"IX", data:"Ninth  std 2"},
                    {label:"X", data:"Tenth  std 2"},
                    {label:"X", data:"Tenth  std 3"}]
            );

            private function getLengthOfArrayCollection():void
            {
                myArrayCollection.filterFunction = filterFunctionHandler;
                myArrayCollection.refresh();
                trace(myArrayCollection.length+" --")
            }

            private function filterFunctionHandler(item:Object):Boolean 
            {
                var value:Boolean = false;
                if(item.label == filterValue)
                {
                    value = true;
                }
                return value;
            }
        ]]>
    </fx:Script>
    <s:layout>
        <s:HorizontalLayout />
    </s:layout>
    <s:Button label="Click for Filter" click="getLengthOfArrayCollection()" skinClass="MyButtonSkinClass"/>
</s:Application>

【讨论】:

  • 好吧,这仍然使用循环; ArrayCollection 只是抽象了循环,因此您不必自己编写它。这种方法会改变使用 ArrayCollection 作为其 dataProvider 的任何基于列表的类的视觉显示,这可能毫无价值。
  • 大家好,感谢您的回复。我有了另一个想法。使用 XML 处理数据。它非常容易,并且得到了我想要的。
猜你喜欢
  • 2015-10-30
  • 1970-01-01
  • 2022-01-02
  • 2019-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多