【发布时间】:2011-07-20 13:35:43
【问题描述】:
我正在使用来自以下站点的组合检查示例: http://www.carballares.es/en/arcadio/?p=220
这是一个非常有用的组件,效果很好。
现在,我需要在应用程序启动时使用某些值(根据某些标准动态定义)设置此组合框的文本属性。问题是,虽然我在应用程序运行的其他时间设置组合框的文本属性没有问题,但不幸的是在启动时设置该属性似乎没有效果。
例如,我想将组合框的 text 属性设置为“Bob”(这是组合框的 dataprovider 中的项目之一),并在组合框上调用“set text”方法。执行分步显示“设置文本”方法正在接收正确的值项,但未设置 _text 属性。
我尝试在“ApplicationComplete”之前不做任何事情,但也没有任何乐趣。
提前感谢您提供的任何帮助或线索。
//编辑 这是代码(上面 URL 中的代码和其他一些更改的组合)。然而,正如我上面所说,这些代码确实有效。问题是它在应用程序启动时不起作用。每当触发事件并调用 setComboText 作为结果时,组合框的文本设置正确。
private function onComboChecked(event:ComboCheckEvent):void {
var obj:Object=event.obj;
var index:int=selectedItems.getItemIndex(obj);
if (index==-1) {
selectedItems.addItem(obj);
} else {
selectedItems.removeItemAt(index);
}
setComboText();
dispatchEvent(new Event("valueCommit"));
dispatchEvent(new Event("addItem"));
}
public function setComboText():void {
if (selectedItems.length>1) {
// text='multiple'
//modified by samuel
var items:ArrayCollection = selectedItems;
var selItems:String = "";
for (var item:String in items)
{
if (items[item].label != "ALL" ) {
selItems = selItems + items[item].label + ",";
}
}
if (selItems.length > 0){
selItems = selItems.substr(0,selItems.length - 1);
}
text = selItems;
}
if (selectedItems.length==1) {
text=selectedItems.getItemAt(0)[labelField];
}
if (selectedItems.length<1) {
//modified by samuel
text="ALL";
//Alert.show("text is "+text);
}
}
【问题讨论】:
标签: apache-flex combobox