0

ASファイルにコピー、貼り付けなどの一般的な機能がいくつかあります。1 つのアプリケーションに埋め込まれたさまざまな mxml アプリケーションに存在するデータを編集するためにそれらを使用したいと考えています。いずれかのイベントで子のコンポーネント ID を関数のパラメーターとして渡すと、null または親アプリ名として値が取得されます。しかし、値にアクセスするには、子のコンポーネントのIDが必要です。助けてください。

アップデート:

以下のコード スニペットを見つけてください。

epfGateTask.mxml

..
<mx:AdvancedDataGrid id="task" resizableColumns="true" initialize="populateArray()"
 dataProvider="{gateTaskList}" width="100%" height="100%" horizontalScrollPolicy="auto" 
verticalScrollPolicy="auto" selectionMode="multipleCells" editable="true" itemEditBeginning="{editStart(event,task)}" paddingTop="0" paddingBottom="0" lockedColumnCount="5" rowCount="27"  sortableColumns="false" liveScrolling="false" variableRowHeight="true" headerWordWrap="true" >
<mx:columns>
<mx:AdvancedDataGridColumn id="gateName" dataField="gateName" headerText="" width="137" wordWrap="true" textAlign="center" editable="false"/>
...

MenuBarUtilities.as

...
var dg_ID :Object ; 

public function cut(event: Event)
{

    if(selectedData != null && selectedData!="")
    {
        copy(event);
        dg_ID.selectedItem[columnName]= "";
        dg_ID.invalidateList();
    }
}

public function editStart(event:AdvancedDataGridEvent,id:Object):void
{   
    dg_ID = id;
    columnIndex  = event.columnIndex;
    columnName = id.columns[columnIndex].dataField;
    var dataField: String = id.selectedItem[columnName];
    selectedData = dataField;       
}
...

この関数は、データフィールドの値を一時変数に保存して、コピー アンド ペーストで値を貼り付けることができるようにします。ここで、「id」は上からわかるように、(dataGrid id) AdvancedDataGridEvent から渡されるものです。メインの mxml を実行し、データグリッド セルを選択して値を切り取ると、null 参照エラーが表示されます。関数の id には、メインの mxml 名である「epfProgram」という値があります。また、dg_ID は null として表示されます。同様に、別の mxml からも同じ機能が必要です。これらの mxml は両方とも、SWFLoader を使用してメインの mxml (epfProgram.mxml) に入れられます。また、コピー、貼り付けなどのボタンはメインの mxml にあります。この問題を解決するのを手伝ってください。

4

1 に答える 1

1

コードが表示されない場合は、IDを送信するのではなく、イベント内のコンポーネントへの参照を送信することをお勧めします。実際、これで、おそらくそれを完全にスキップして、イベントリスナーで受信するイベントのcurrentTargetプロパティを介して送信コンポーネントにアクセスできると言いました。

于 2010-07-16T15:37:06.793 に答える