0

mxml ファイル (たとえば、samp.mxml) にデータグリッドがあります。

<mx:DataGrid id="taskDataGrid" dataProvider="{initDG}" variableRowHeight="true" 
    editable="true" width="100%"  paddingBottom="1" paddingTop="1" height="55" > 

<mx:columns>

      <mx:DataGridColumn dataField="Select" 
                editable="true" 
                rendererIsEditor="true" 
                itemRenderer="mx.controls.CheckBox" 
                editorDataField="selected" />

      <mx:DataGridColumn dataField="TaskName"
                width="220"
                editable="true" 
                rendererIsEditor="true" 
                itemRenderer="components.taskComponent"/> //i call the component.

      <mx:DataGridColumn dataField="TaskId"
                itemRenderer="mx.controls.TextInput" />     

 </mx:columns>
 </mx:DataGrid>

データグリッドの列の 1 つで、テキスト入力ボックスとボタンを表示する必要があります。そのため、その機能を個別のコンポーネント、つまり taskComponent.mxml として記述しました。

 <mx:TextInput id="TaskName"
    editable="true" 
    text="{data.TaskName}" 
    mouseDown="addTaskRow(event);"    
   /> 

 <mx:Button id="searchTask" label="..." width="30" height="25" click="showPopUp();"/>

コンポーネントのテキスト入力ボックスをクリックすると、別のデータ行が追加されます。データグリッドをクリックすると、行が追加されるので、以前はそれを持っていました。そのため、samp.mxml 自体に関数を記述しました。データグリッド行を追加する機能です。

private function addTaskRow(event:MouseEvent):void
        {
            taskDataGrid.dataProvider.addItem(
                {

                }
            );
            taskDataGrid.height += 30; 

        }

関数を taskComponent ファイルに記述しようとすると、「未定義のプロパティ taskDataGrid へのアクセス」というエラーが表示されます。taskComponent でデータグリッドを使用するにはどうすればよいですか?

4

3 に答える 3

1

trace(this.owner);テキスト入力の mouseDown に追加して、トレースする内容を確認します。[object DataGrid] のようなものをトレースするDataGrid(this.owner)と、taskDataGrid にアクセスするために使用できます。

于 2009-10-09T05:06:29.583 に答える
0

あなたはそのようにしたくありません。おそらく、ボックスとボタンは新しいタスクを追加します。やりたいことは、initDG 変数が何であれ、新しい行を追加することです。ArrayCollection である必要があります。次に、追加されると、グリッドが更新されて新しいデータが表示されます。

UI をデータにしたくありません。データを反映させたい。データ モデルの変更に集中し、グリッドに反映させます。Flex についてもう少し掘り下げる必要があるかもしれません。DataGrid、dataProvider、およびバインディングが ArrayCollections でどのように機能するかについて詳しく学ぶことに集中してください。

于 2009-10-09T15:02:24.350 に答える
0

Item Renderers に関する Peter Ent の記事を参照してください。これは非常に有益であり、いくつかのベスト プラクティスを紹介します。私はこれを何度も参照しましたが、彼が言うことの多くは非常に有用であることがわかりました...

http://www.adobe.com/devnet/flex/articles/itemrenderers_pt1.html

この記事では特に、ListData を使用して親コンポーネントにアクセスする方法を示します - これを行う正しい方法:

http://www.adobe.com/devnet/flex/articles/itemrenderers_pt3_02.html

ListData は、親にアクセスするためのキーです。もう 1 つのオプションは、レンダラーからカスタム イベントをディスパッチすることです。

于 2009-10-09T19:33:06.957 に答える