首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flex - ComboBox labelFunction不会随ArrayCollection的更新而刷新

Flex - ComboBox labelFunction不会随ArrayCollection的更新而刷新
EN

Stack Overflow用户
提问于 2010-08-11 09:17:10
回答 1查看 2.2K关注 0票数 0

我的ComboBox有两个问题。

我的第一个问题是,当我的ArrayCollection只有一个项目时,由于某种原因,我不能选择第一个项目。当我尝试选择这一项时,在mxml上设置的change函数永远不会被调用。如果我设置一个提示符,它就会起作用。我知道该项目尚未选中,因为在调试时,选中的项目显示为null。我不想使用提示符。我希望自动选择ArrayCollection中的第一个项目。因此,如果只有一个项目,我希望选中的项目就是这个项目。仅供参考-我正在使用labelFunction格式化数组集合中的数据。你知道为什么我不能选择第一个项目或将ArrayCollection中的第一个项目设置为选中的项目吗?

我更大的问题是,当我的Array Collection更新时,我的label函数不能刷新,因为当我第一次打开dropdown时,它有特定的数据。当Array Collection更新并再次打开下拉列表时,我在下拉列表中看到了旧数据,但它已经不存在了。

假设我有一个ComboBox,它有一个包含一个州代码及其州名称的数组集合的数据源。它们是一个在州代码和州名称之间放置破折号的labelFunction。他们没有提示符,所以ComboBox看起来像GA - Georgia,当你打开下拉菜单时,那将是所有的东西。我希望自动选择该项目。知道为什么在用新数据更新数组集合后打开下拉列表时会显示旧数据吗?

代码语言:javascript
复制
<mx:ComboBox labelFunction="getFormattedNpaNxxCollectionList()" 
     dataProvider="arrayColl" change="doSomething()"/>

public function getFormattedNpaNxxCollectionList(item:Object):String
{
  return StringUtil.substitute("{0} - {1}", item.stateCode, item.stateName);
}
EN

回答 1

Stack Overflow用户

发布于 2010-08-11 11:40:01

被声明为[Bindable]arrayColl -如果它不是可绑定的,更新将不会自动反映。在你要更新集合的地方发布代码。

若要在更新数组集合后只有一项的情况下选择第一项,可以调用

代码语言:javascript
复制
if(arrayColl.length == 1)
  cb.selectedIndex = 0;

在更新之后。

如果只更新集合中的值(而不是将整个新的数组集合对象重新分配给arrayColl),则可以从数组集合的collectionChange事件处理程序执行此操作。否则,您必须在将新的集合对象分配给arrayColl变量之后执行此操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3454645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档