0

dataprovider が に設定されている ComboBox が 1 つありますArrayCollection。にdataProviderは XML データが含まれています。

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

長さがitemlabelいくつかの値 (たとえば 25) よりも大きい場合、ラベルを切り捨てて末尾に 2 つのドット (..) を追加する必要があるという機能が必要です。

ChangeComboBoxのイベントでこれを次のように実装しました。

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 に答える