2012-01-19 6 views
1

私はFlex 4.5で動作します。私はカスタムドロップダウンリストを作成したいと思います。実際、ドロップダウンリストの各行にラベルと削除ボタンを表示したいと思います。 目的はクリックで削除ボタンを削除することです。 これはシンプルなように見えますが、その方法はわかりません。 DropDownListコントロールが解雇されることから内部たItemRendererオブジェクトから任意のMouseEvent.CLICKを防ぐため、この1のためのいくつかのフープを介してジャンプする必要がこのitemrendererの削除ボタン付きドロップダウンリストを作成

+0

ドロップダウンに削除ボタンとラベルを表示するitemRendererを作成します。次に、ボタンをクリックすると、イベントをバブルして、dataProviderから項目を削除できます。 – JeffryHouser

+0

お返事ありがとうございます。しかし、あなたは私にコードサンプルを与えることができますか?ありがとう – Flex60460

+1

@ www.Flextras.com動作しません:DropDownListは、ボタンのクリックが発射されないようにします。しかしMouseDownは防げない。しかし、ListのselectedIndexはまだ設定されていません。 – RIAstar

答えて

6

を支援するための

感謝。

最初にまず:これを機能させるにはカスタムイベントが必要です。あなたの商品または少なくともそのインデックスを運ぶもの。例:

このイベントをディスパッチする '削除'ボタンを使用してカスタムItemRendererを作成します。ここで重要な

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark"> 

    <fx:Script> 
     <![CDATA[ 
      private function remove():void { 
       owner.dispatchEvent(
        new ItemEvent(ItemEvent.REMOVE, data as MyClass) 
       ); 
      } 
     ]]> 
    </fx:Script> 

    <s:Label id="labelDisplay" verticalCenter="0" left="10" /> 

    <s:Button verticalCenter="0" right="10" width="16" height="16" 
       mouseDown="remove()" /> 

</s:ItemRenderer> 

は、(前述のように)そのクリックイベントが発生しませんので、あなたは、ボタンのMOUSE_DOWNイベントをキャッチするということです。 ItemRendererのownerプロパティは、List of itの子です。

パズルの最後の部分。ここでは、カスタムのitemRendererを持つあなたのDropDownListです:

<s:DropDownList id="myDropDownList" dataProvider="{dp}" 
       itemRenderer="MyItemRenderer" /> 

は、そして、ここでは、あなたがそのカスタムイベントをリッスンし、選択した項目を削除する方法は次のとおりです。

myDropDownList.addEventListener(ItemEvent.REMOVE, removeSelectedItem); 

private function removeSelectedItem(event:ItemEvent):void { 
    var items:IList = myDropDownList.dataProvider; 
    var index:int = items.getItemIndex(event.item); 
    items.removeItemAt(index); 
} 

我々はまだだろうmyDropDownList.selectedIndexプロパティ]をクリックしMOUSE_DOWNをキャッチ代わりにするので以前に選択された項目で(選択されていない場合は-1)。これは、カスタムイベントが必要な理由です。これは、削除したいアイテムが他にありません。

+0

お返事ありがとうございます、私はそれをテストします – Flex60460

関連する問題