Мне нужно отобразить DropDownLists в столбце DataGrid в моем приложении Flex. Вот что я делаю:
Во-первых, у меня есть функция средства визуализации элементов, которая создает настраиваемое средство визуализации элементов и передает ему свойство, которое представляет собой IList, который будет использоваться в качестве dataProvider для dropDownList:
private function rendererFunction(item:Object):ClassFactory {
var itemRenderer:ClassFactory = new ClassFactory(AudActionDropDownIR);
itemRenderer.properties = {AudActionData: AudActionData};
return itemRenderer;
}
Это код для класса визуализации пользовательских элементов:
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.collections.IList;
[Bindable]
public var TheData:ArrayCollection = new ArrayCollection();
public var AudActionData:IList;
public function init():void
{
TheData = new ArrayCollection(AudActionData.toArray());
TheData.filterFunction = filterTheData;
TheData.refresh();
}
private function filterTheData(item:Object):Boolean {
return item.AUD_STEP_TYPE_ID == data.AUD_STEP_TYPE_ID;
}
]]>
</fx:Script>
<s:DropDownList id="theList"
labelField="AUD_ACTION_DESCR"
requireSelection="true"
selectedIndex="0"
dataProvider="{TheData}"
width="100%"/>
IList, передаваемый в средство визуализации (AudActionData), преобразуется в отфильтрованную коллекцию ArrayCollection, которая будет использоваться в качестве dataProvider для раскрывающегося списка.
У меня есть пара проблем с этим.
Во-первых, как я могу вызвать функцию init при создании рендерера?
Во-вторых, когда я устанавливаю столбец itemRendererFunction = "rendererFunction", приложение не запускается, появляется белый экран. Но когда я устанавливаю itemRenderer = "components.AudActionDropDownIR", приложение запускается, но, конечно, в раскрывающемся списке нет данных.
Есть идеи? Спасибо!