我有一个包含一些列的 dataGrid,这些列通常有一个固定的 dataField,一切正常。
但是,在特殊情况下,我需要将那个dataField更改为另一个,但我不知道该怎么做。
我试图捕捉填充数据的那一刻,并以某种方式拦截 dataField 并将其更改为我想要的那个..但到目前为止还没有运气。
任何想法?。
我有一个包含一些列的 dataGrid,这些列通常有一个固定的 dataField,一切正常。
但是,在特殊情况下,我需要将那个dataField更改为另一个,但我不知道该怎么做。
我试图捕捉填充数据的那一刻,并以某种方式拦截 dataField 并将其更改为我想要的那个..但到目前为止还没有运气。
任何想法?。
根据您到底要做什么,我可以想到三种方法。
1) 如果您尝试一次交换整个列(例如选择要显示哪一列的按钮),您可以设置 GridColumn 的 dataField 和 headerText 字段值:
<s:GridColumn id="fieldToChange" dataField="name" headerText="Name">
...
protected function changeToRank(event:MouseEvent):void
{
fieldToChange.dataField = "rank";
fieldToChange.headerText = "Rank";
}
2) 与上述类似,如果您使用状态,则可以为每个状态指定 dataField 和 headerText:
<s:GridColumn dataField.nameState="name" dataField.rankState="rank" ...>
3)如果您想根据数据项的某些标准更改单行显示的内容,您可以使用 labelFunction 设置您想要显示的任何内容。
<s:GridColumn labelFunction="nameOrRank" ...>
...
protected function nameOrRank(item:Object):String
{
if (item.foo == xyzzy)
return item.name;
else
return item.rank;
}