我需要在flex中创建一个自动完成的组件,使用webservice从远程数据库中获取自动完成的结果。我有webservice和查询部分解决。我已经通过扩展VBox在动作脚本中制作了自定义组件。但我无法弄清楚如何生成应该显示在我的自动完成文本框中的文本输入下的弹出窗口。如何在Flex中创建自定义自动完成组件?
目前我使用类似
PopUpManager.addPopUp(popup, parentComponent);
我弹出类扩展垂直框中,然后它延伸在createChildren方法如下
protected override function createChildren():void
{
for (var i:int = 0; i < results.length; i++) {
var itemC:UIComponent =
factory.getComponent(results[i]);
addChild(itemC);
itemC.addEventListener(MouseEvent.CLICK,
getClickFunction(i));
}
private function getClickFunction(index:int):Function {
return function (event:MouseEvent):void
{
selectedIndex = index;
};
}
不幸的是当WebService检索其结果和addPopUp叫,没有什么出现。
目前factory.getComponent方法执行此代码
public function getComponent(user:Object):UIComponent
{
var email:Label = new Label();
email.text = user.email;
var name:Label = new Label();
name.text = user.displayName;
var vbox:VBox = new VBox();
vbox.addChild(name);
vbox.addChild(email);
return vbox;
}
我发现的现有实现不适用于从远程数据源加载。他们需要立即得到结果数据。好super.CreateChildren的事情上的呼叫。我会看看这是否有帮助,可能就是这样。 – 2010-11-30 03:22:47