如何动态更改dataField?

时间:2014-04-22 15:50:13

标签: flex datagrid datafield

我有一个包含一些列的dataGrid,这些列通常都有一个固定的dataField,一切正常。

但是,在特殊情况下,我需要将dataField更改为另一个,但我不知道该怎么做。

我试图抓住数据被填充的时刻,并以某种方式截取dataField并将其更改为我想要的那个..但到目前为止没有运气。

任何想法?。

1 个答案:

答案 0 :(得分:0)

根据您的具体操作,我可以考虑三种方法。

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; }