Flex:将变量传递给自定义组件时,应用程序会混淆

时间:2012-05-09 16:23:25

标签: actionscript-3 flex actionscript flex4

我是Flex的新手,我遗漏了一些关于构建Flex应用程序的基本知识 - 我已经实现了一个自定义组件MyReportGrid并使用GridColumn扩展了MyColumn。我试图概述下面的应用程序代码。

值得注意的是,课程OfficeItems由课程MyItems使用,MyColumn(扩展GridColumn)包含customPath变量用于访问类pen中的变量pencilstaplerOfficeItems

我认为这就是为什么手动排序(通过点击数据网格中的列)仅适用于与zipCodestateCode以及非pen,{{1 }和pencil

此外,当我尝试为staplerzipCode使用简单的labelFunction时,它始终正常,但为stateCodepen或{{实现labelFunction 1}}永远不会奏效。 “永不工作”我的意思是labelFunction被正确调用,并且它执行它所需的任务,因为labelFunction接收正确的对象并实际返回正确的格式化的String,但是这个返回的值永远不会显示在datagrid中(我是假设pencil变量将labelFunction混淆为返回的String映射到哪个变量。

我认为这些都是同一个问题,因为stapler的{​​{1}}方面混淆了应用程序。知道如何修复排序和/或labelFunction吗?提前感谢您耐心阅读这篇(长篇)帖子。

课程是:

customPath

customPath

数据网格如下:

MyColumn

其中package com.supportClasses { public class OfficeItems { public var pen:*; public var pencil:*; public var stapler:*; } } 的类别为package com.models { import com.supportClasses.OfficeItems; [Bindable] public class MyItems extends Model { public function myItems() { super(); } public var office:OfficeItems; public var zipCode:int; public var stateCode:String; } } (注意:... <components:MyReportGrid id="myGrid" dataProvider="{_myData}"...> <components:columns> <fx:Array> <supportClasses:MyColumn customPath="office" dataField="pen"... /> <supportClasses:MyColumn customPath="office" dataField="pencil"... /> <supportClasses:MyColumn customPath="office" dataField="stapler"... /> <supportClasses:MyColumn dataField="zipCode"... /> <supportClasses:MyColumn dataField="stateCode"... /> ... 功能在此处不存在时会被_myData忽略,例如MyItemscustomPath MyColumn)。 zipCode是:

stateCode

和MyReportGrid是:

MyColumn

labelFunction是:

package com.components.supportClasses {
    import spark.components.gridClasses.GridColumn;
    public class MyColumn extends GridColumn
    {
        public var customPath:String="";
        ...
        public function MyColumn(headerText:String="header" customPath:String="", dataField:String="data", ...) {
           this.headerText=headerText;
           this.customPath=customPath;
           this.dataField=dataField;
           ...
        }
    }
}

来自:

package com.models {
    <?xml version="1.0" encoding="utf-8"?>
    <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"    
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx"
         width="400" height="300">
       import com.components.myClasses.MyColumn;
       import com.itemRenderers.myItemRenderer;
       import mx.collections.ArrayCollection;
       import mx.collections.ArrayList;
       import mx.collections.ListCollectionView;
       import spark.components.gridClasses.GridColumn;
       ...
       <s:DataGrid width="100%" ... />
    </s:Group>
}

1 个答案:

答案 0 :(得分:0)

这只是一个猜测,但它可能就像在OfficeItems类中添加“toString”函数一样吗? (我会使用评论,但仍在努力获得声誉。)