0

リスト コンポーネントがあり、リスト内のアイテム用のアイテム エディターがあります。エディターで複数のデータを編集してもらい、エディターを閉じる前にデータを検証したいので、変更が完了したらユーザーがクリックするボタンが必要です。ボタンのクリック イベントでアイテム エディターを閉じてデータ プロバイダーに変更をコミットする方法がわかりません。

4

3 に答える 3

0

データバインディングを使用して、Flexに任せます。

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

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

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;
    }
}
于 2009-05-19T18:58:00.087 に答える
0

リストコントロールの複数のフィールドの編集を処理するには、ItemEditEndイベントをキャッチしてから、目的のフィールドを手動で変更する必要があります。

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

通常、セルからフォーカスアウトすると、リストがこのイベントのディスパッチを処理します。頭のてっぺんからそのプロパティがわからないのですが、ボタンクリックハンドラーでこのイベントを作成して、自分でディスパッチできるはずです。

于 2009-05-20T14:52:17.507 に答える