0

我有一个 ComboBox,它的 dataprovider 设置为ArrayCollection. dataProvider包含 XML 数据。

<s:ComboBox id="articleComboBox" width="245" dataProvider="{_pageCollection}" labelField="title"  change="comboChange(event)"/>

我想要一个功能,如果 的长度itemlabel大于某个值(例如 25),则必须截断标签并在末尾附加两个点(..)。

Change在ComboBox的情况下,我已将其实现为:

private function comboChange(event:*):void{
   var str:String = articleComboBox.textInput.text;
   if(str.length > 25){
      str = str.slice(0, 22) + "..";
      articleComboBox.textInput.text = str;
      }
}

但它不起作用。文本仍然显示原始的“ title”字段dataProvider作为一个整体。

可能是由于labelfieldmxml 中指定的属性。我在这里缺少什么?

任何建议将不胜感激。请帮忙...

这里是dataProvider_pageCollection):

<articles>
<article id="1146270" title="new article1" page_id="3205769"></article>
<article id="1144499" title="new article2"  page_id="3205771"></article>
<article id="1082813" title="All Dressed Up And No Place To Train…" page_id="3205773"></article>
<article id="1146024" title="The NCAA Doesn" page_id="3205776"></article>
<article id="1083014" title="The Chula Vista Olympic Training Center" page_id="3205777"></article>
</articles>
4

1 回答 1

2

您将为您的 ComboBox 创建一个自定义皮肤。在皮肤实现中,您将看到:

<s:TextInput id="textInput" enabled.disabled="false"
                 left="0" right="18" top="0" bottom="0" 
                 skinClass="spark.skins.spark.ComboBoxTextInputSkin"/> 

这是您需要的实际 TextInput。你可以玩它或修改spark.skins.spark.ComboBoxTextInputSkin它正在使用。

例如,添加change处理程序以在用户更改其内容时做出反应,以便您可以重新格式化字符串。

于 2012-10-09T11:18:08.113 回答