2017-12-05 13 views
1

私はこのタイプの質問を既に多くの人に聞いていますが、その投稿はFlex FrameworkのItemRendererとItenEditorの実際の違いについて理解するための情報を私に与えてくれませんでした。ItemRendererとFlex 4のItemEditorの違いは何ですか?

私が知っているように、ItemRendererは主にビジュアル要素の表示に使用され、ItemEditorは主に編集目的で使用されます。

だから私はその違いを見つけるために、例を以下試してみました:

たItemRendererのために、私は以下のコードを使用:

<mx:DataGrid dataProvider="{initDG}"> 
    <mx:columns> 
     <mx:DataGridColumn headerText="Artist" dataField="Artist"/> 
     <mx:DataGridColumn headerText="Album" dataField="Album"/> 
     <mx:DataGridColumn headerText="Price" dataField="Price"> 
      <mx:itemRenderer> 
       <fx:Component> 
        <mx:TextInput restrict="0-9" maxChars="10" /> 
       </fx:Component> 
      </mx:itemRenderer> 
     </mx:DataGridColumn> 
     <mx:DataGridColumn headerText="Cover" dataField="Cover"/> 
    </mx:columns> 
</mx:DataGrid> 

をし、次のように私は結果を得た:

enter image description here

価格フィールドは編集可能として表示されます。

そして再び次のように私はのitemEditorと同じコードを試してみました:

<mx:DataGrid dataProvider="{initDG}"> 
    <mx:columns> 
     <mx:DataGridColumn headerText="Artist" dataField="Artist"/> 
     <mx:DataGridColumn headerText="Album" dataField="Album"/> 
     <mx:DataGridColumn headerText="Price" dataField="Price"> 
      <mx:itemEditor> 
       <fx:Component> 
        <mx:TextInput restrict="0-9" maxChars="10" /> 
       </fx:Component> 
      </mx:itemEditor> 
     </mx:DataGridColumn> 
     <mx:DataGridColumn headerText="Cover" dataField="Cover"/> 
    </mx:columns> 
</mx:DataGrid> 

を、次のように私は結果を得た:

enter image description here

しかし、ここでの価格フィールドは編集不可です。

だから、私はこれらのコントロールに新しいので、なぜそれが起こっているのか混乱しています。 ItemEditorを使用した後で、そのフィールドが編集不可能な理由。

誰かが知識を持っていれば、その背後にある理由は、これらの2つのコントロールに関する詳細を理解するのを助けてください。

答えて

2

最初のケースでは、レンダラー内に編集可能なフィールドを埋め込んでいるため、編集はラウンドアバウトで動作します。セルは常に編集モードにあり、DataGridの組み込み編集モードは使用されません。

2番目のケースでは、DataGridに 'editable = true'が必要なため、itemEditorはFlexによってアクティブ化されません。 editableをtrueに設定すると、ユーザーがセルをクリックするとitemEditorがアクティブになります。

第3のアプローチがあります:DataGridに 'editable = true'を使用し、itemRendererを保持し、列に 'rendererIsEditor'を設定します。

ここで例を確認してください。 ItemRendererItemEditorAdobe Flex doc

+0

こんにちは@Chrisあなたの再生のためにありがとう、私はDataGridを "editable = true"にしてitemRendererを保持し、カラムに "rendererIsEditor"を設定しないでください列も編集可能です。 ItemRendererとItemEditorの違いは何ですか?ItemEditorを使用する理由は? – Ashish

+0

DataGridを "editable = true"のままにしておき、編集不可能な列に対してDataGridColumn "editable = false"を設定します。 itemRendererおよびitemEditorを削除します。編集可能な最も簡単なDataGridに戻ります。これは、あなたのニーズに十分かもしれません。これがどのように機能するか教えてください。 – Chris

3

違い:

あなたがあなたのコンポーネントの様相を変えたItemRenderer使用しています。あなたのケースでは、データグリッド列があり、列にある画像をitemRendererに適用すると画像が表示されます。

ItemEditorを使用している場合、その列を変更しようとすると、コンポーネントのアスペクトを操作します。あなたが列をクリックしたときにTextInputとしてItemEditorを列に置くと、テキスト入力が表示されます。

FlexにはItemRendererとItemEditorが自動的に管理されています。デフォルトでは、レンダラーはエディタであるため、列の編集に使用できるのと同じアスペクトをItemRendererに実装する必要があります。

これらの機能を別々に使用する場合は、rendererIsEditor = falseを入力することができますが、2つの機能を実装する必要があります。

私の説明は明らかです。他の疑問がある場合は教えてください

+0

こんにちは@ジョーTaras、あなたの答えのおかげで、私は違いを理解したが、1つの質問は "ItemEditorは、なぜ我々はItemEditorを敵に行くレンダリングすることによってIdemRendererで同じ編集作業を行うことができます? " – Ashish

+0

@Ashish:こんにちは、申し訳ありませんが、あなたの新しい質問は分かりません: "ItemEditorの固有の機能はありますか?なぜなら、rendererIsEditorをtrueにしてItemEditorを使う理由は同じでしょうか? –

関連する問題