首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flex4.6中的arraycollection错误

flex4.6中的arraycollection错误
EN

Stack Overflow用户
提问于 2012-12-17 17:44:54
回答 1查看 498关注 0票数 2

我在将json传递给datagrid时遇到了困难。我得到以下错误:

代码语言:javascript
复制
TypeError: Error #1034: Type Coercion failed: cannot convert mx.collections::ArrayCollection@bc292a9 to Array.
    at Function/<anonymous>()[C:\Users\Birger\Dropbox\Rich Media Applications\P006_Project\src\FULLTEST.mxml:10]
    at Function/http://adobe.com/AS3/2006/builtin::apply()
    at mx.binding::Binding/wrapFunctionCall()[E:\dev\4.y\frameworks\projects\framework\src\mx\binding\Binding.as:395]
    at mx.binding::Binding/innerExecute()[E:\dev\4.y\frameworks\projects\framework\src\mx\binding\Binding.as:469]
    at Function/http://adobe.com/AS3/2006/builtin::apply()
    at mx.binding::Binding/wrapFunctionCall()[E:\dev\4.y\frameworks\projects\framework\src\mx\binding\Binding.as:395]
    at mx.binding::Binding/execute()[E:\dev\4.y\frameworks\projects\framework\src\mx\binding\Binding.as:333]
    at mx.binding::BindingManager$/executeBindings()[E:\dev\4.y\frameworks\projects\framework\src\mx\binding\BindingManager.as:153]
    at FULLTEST/_FULLTEST_ArrayCollection1_i()[C:\Users\Birger\Dropbox\Rich Media Applications\P006_Project\src\FULLTEST.mxml:4]
    at FULLTEST()[C:\Users\Birger\Dropbox\Rich Media Applications\P006_Project\src\FULLTEST.mxml:4]

我的代码是:

代码语言:javascript
复制
<?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:components="components.*" initialize="getData.send();">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <mx:HTTPService id="getData" url="http://localhost/P006_Project/Query.php" 
                        useProxy="false" method="POST" resultFormat="text" result="getPHPData(event)">  
        </mx:HTTPService>
        <s:ArrayCollection id="acItems" source="{dataArray}" />
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.events.FlexEvent;
            import mx.rpc.events.ResultEvent;

            [Bindable]private var dataArray:ArrayCollection = new ArrayCollection();

            private function initDataGrid():void
            {
                getData.send();
            }

            private function getPHPData(event:ResultEvent):void
            {
                var rawArray:Array;
                var rawData:String = String(event.result);
                rawArray = JSON.parse(rawData) as Array;
                dataArray = new ArrayCollection(rawArray);
            }


        ]]>
    </fx:Script>

    <mx:Accordion id="accItems" creationPolicy="auto">
        <s:NavigatorContent label="Frisdranken">
            <components:FULLTESTCOMP acItems="{acItems}" creationComplete="{initDataGrid()}"/>
        </s:NavigatorContent>
    </mx:Accordion>
</s:Application>

因此,我尝试通过将数据库中的内容转换为JSON来填充数据网格。我使用了一个自定义组件(在这个组件中只是一个普通的datagrid )。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-17 17:55:24

以下是问题所在:

代码语言:javascript
复制
       <s:ArrayCollection id="acItems" source="{dataArray}" />

源必须是“数组”类型,但您正在将源分配给一个ArrayCollection对象。

您应该执行以下操作:

代码语言:javascript
复制
             <s:ArrayCollection id="acItems" source="{dataArray.source}" />

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13911677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档