我是Flex的新手,我遗漏了一些关于构建Flex应用程序的基本知识 - 我已经实现了一个自定义组件MyReportGrid
并使用GridColumn
扩展了MyColumn
。我试图概述下面的应用程序代码。
值得注意的是,课程OfficeItems
由课程MyItems
使用,MyColumn
(扩展GridColumn
)包含customPath
变量用于访问类pen
中的变量pencil
,stapler
和OfficeItems
。
我认为这就是为什么手动排序(通过点击数据网格中的列)仅适用于与zipCode
和stateCode
以及非pen
,{{1 }和pencil
。
此外,当我尝试为stapler
或zipCode
使用简单的labelFunction时,它始终正常,但为stateCode
,pen
或{{实现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
忽略,例如MyItems
和customPath
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>
}
答案 0 :(得分:0)
这只是一个猜测,但它可能就像在OfficeItems类中添加“toString”函数一样吗? (我会使用评论,但仍在努力获得声誉。)