2009-05-19 5 views
0

私はリストコンポーネントを持っており、リスト内のアイテムのアイテムエディタを持っています。エディタで複数のデータを編集する必要があるため、エディタを終了する前にデータを検証したいので、変更が完了したらユーザーがクリックするボタンが必要です。ボタンのクリックイベントで何をすべきかわからないので、アイテムエディタを閉じてデータプロバイダに変更をコミットします。フレックスリストコンポーネント内のアイテムエディタを変更をコミットするにはどうすればよいですか?

答えて

0

データバインディングを使用して、Flexがあなたのために仕事をするようにします。

オブジェクトmyObjectにバインド可能なプロパティmyList:IListがあります。このオブジェクトにディスプレイをバインドします。

編集を開始したら、そのリストをコピーします。 MouseEvent.CLICKで

var ed:Editor // Your list editing object. 
var edProvider:IList = ed.dataProvider; 
var targList:IList = myObject.myList; 

var bool:Boolean  = (myObject.myList.length > edProvider.length); 
var len:int   = (bool)? targList.length: edProvider.length; 

var item:*   = null; 

for(var i:int = 0; i < len; i++) 
{ 
    try // a "just in case". You probably will never have a problem. 
    { 
     item = edProvider.getItemAt(i); 
     targList.setItemAt(item, i); 
    } 
    catch(error:Error) 
    { 
     continue; 
    } 
} 
0

Listコントロールで複数のフィールドの編集を処理するには、itemEditEndイベントをキャッチし、手動で興味のあるフィールドを変更する必要があります

ここでは、「例:リストコントロールでカスタムアイテムエディタを使用する」 - http://livedocs.adobe.com/flex/3/html/help.html?content=celleditor_9.html#226555を参照してください。

通常、Listは、セルからフォーカスしたときにこのイベントのディスパッチを処理します。私は自分の頭の上からそのプロパティがわからないが、あなたはボタンクリックハンドラでこのイベントを構築し、それから自分でディスパッチできるはずです。

+0

答えに感謝しますが、それは私が探しているものではありません。値の部分を設定することはうまくいけば、私は助けが必要なアイテムエディタの部分を検証して閉じるだけです。 – smartdirt

関連する問題