我有一个ComboBox,其数据提供者设置为ArrayCollection
。
dataProvider
包含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>
答案 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
处理程序以在用户更改其内容时作出反应,以便您可以重新格式化字符串。