Как изменить dataField на лету?

У меня есть dataGrid, который имеет несколько столбцов, эти столбцы обычно имеют фиксированный dataField, все работает нормально.

Однако при особых обстоятельствах мне нужно изменить это поле данных на другое, но я не уверен, как это сделать.

Я попытался запечатлеть момент, когда данные заполняются, каким-то образом перехватить поле данных и изменить его на тот, который я хочу... но пока не повезло.

Любая идея?.

1 ответ

В зависимости от того, что именно вы пытаетесь сделать, я могу придумать три способа сделать это.

1) Если вы пытаетесь поменять весь столбец за раз (например, кнопка, чтобы выбрать столбец для отображения), вы можете установить значения полей dataField и headerText в GridColumn:

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

Другие вопросы по тегам