Flex:如何在设置labelfield属性时截断ComboBox标签?

时间:2012-10-09 10:45:44

标签: actionscript-3 flex combobox flex4

我有一个ComboBox,其数据提供者设置为ArrayCollectiondataProvider包含XML数据。

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

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

我已在ComboBox的Change事件中实现了这个:

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”字段。

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

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

以下是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>

1 个答案:

答案 0 :(得分: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处理程序以在用户更改其内容时作出反应,以便您可以重新格式化字符串。