<s:GridColumn>
tag inherits all of the tag
attributes of its superclass and adds the following tag attributes:
<s:GridColumn Properties dataField="null" dataTipField="null" dataTipFormatter="null" dataTipFunction="null" editable="true" formatter="null" headerRenderer="null" headerText="value of dataField" imeMode="null" itemEditor="null" itemRenderer="null" itemRendererFunction="null" labelFunction="null" maxWidth="NaN" minWidth="20" rendererIsEditable="false" resizeable="true" showDataTips="undefined" sortable="true" sortCompareFunction="null" sortDescending="false" visible="true" width="NaN" />]]>
このメソッドは、値
item[dataField].toString()
フォーマッターが指定された場合、このメソッドの値は次のようになります。
formatter.format(item[dataField])
このプロパティのこの値は、必ずしも列ヘッダーに表示されるストリングであるとは限りません。 このプロパティは、データプロバイダーのデータにアクセスする目的でのみ使用します。 詳細については、
列または列のグリッドで
この列または列のグリッドで
フォーマッターの
デフォルトでは、
例えば、フルネームをデータヒントとして表示したい場合に、データプロバイダーに lastName フィールドと firstName フィールドが別々に存在しているケースが考えられます。このような場合は、両方のフィールドの値を単一のストリングとして返す関数を
dataTipFunction(item:Object, column:GridColumn):String
通常の関数は、アイテムの firstName および lastName プロパティを連結するか、Date 値のプロパティに対してカスタム書式を適用します。
フォーマッターの
デフォルトのアイテムエディターは DefaultGridItemEditor クラスです。これは単純なテキストフィールドを編集可能にします。 GridItemEditor クラスのサブクラスを作成することによって、カスタムアイテムレンダラーを作成できます。 カスタムアイテムエディターでは、データをグリッドの行全体に書き込み、より複雑なエディターを定義できます。
itemRendererFunction(item:Object, column:GridColumn):IFactory
次に、アイテムレンダラー関数の例を示します。
function myItemRendererFunction(item:Object, column:GridColumn):IFactory { return (item is Array) ? myArrayItemRenderer : myItemRenderer; }
デフォルトのアイテムレンダラーは DefaultGridItemRenderer クラスです。これはデータアイテムをテキストとして表示します。 GridItemRenderer クラスのサブクラスを作成することによって、カスタムアイテムレンダラーを作成できます。 カスタムアイテムレンダラーでは、グリッドの行全体のデータにアクセスして、セルについてより複雑な視覚的表現を定義できます。
デフォルト値は、関連付けられているグリッドコントロールの
ラベル関数を使用して、複数のデータプロバイダーアイテムの値を単一のストリングとして組み合わせることができます。 指定する場合、このプロパティは
labelFunction(item:Object, column:GridColumn):String
一般的なラベル関数は、データプロバイダーアイテムの firstName および lastName プロパティを連結するか、Date 値のプロパティに対してカスタム書式を適用します。
このプロパティを
このプロパティを
このプロパティの値が undefined(デフォルト)の場合、関連付けられているグリッドの
sortCompareFunction のシグネチャは次と一致する必要があります。
sortCompareFunction(obj1:Object, obj2:Object, column:GridColumn):int
この関数はオブジェクトの比較に基づいて次のような値を返す必要があります。
関数は、列パラメーターを使用して、一般的な比較関数を記述できます。
メモ:
dataProvider が ICollectionView でない場合、このプロパティは無視されます。
このプロパティを設定してもソートは実行されません。ソート方向のみが設定されます。
データプロバイダーが ICollectionView でない場合、このプロパティは無視されます。
データプロバイダーが ICollectionView でない場合、このプロパティは無視されます。
これは、ファクトリによって生成されたすべてのビジュアルエレメント用のオプションインターフェイスです。ただし、次の itemRenderer は例外です。
public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void { caretStroke.color = grid.dataGrid.getStyle("caretColor"); }
DataGridSkin.mxml には、このような例が他にもたくさんあります。カスタム DataGrid スキンのビジュアルエレメントでは、追加の柔軟性が不要な場合、このインターフェイスを実装しないように選択できます。
ビジュアルエレメントが selectionIndicator や hoverIndicator などの DataGrid スキンパーツの値が設定されたファクトリによって生成される場合、
DefaultGridItemEditor を使用する代わりに、カスタムアイテムエディターを作成できます。 アイテムエディターには、spark.components.gridClasses.IGridItemEditor インターフェイスを実装する必要があります。 通常、spark.components.gridClasses.GridItemEditor クラスのサブクラスとしてアイテムエディターを作成します。
次の例に示すように、ActionsScript で定数を使用します。
myDG.selectionMode = GridSelectionMode.MULTIPLE_CELLS;
MXML では、次の例に示すように、定数の String 値を使用します。
<s:DataGrid id="myGrid" width="350" height="150" selectionMode="multipleCells"> ... </s:DataGrid>
アイテムレンダラーはグリッドの各列に関連付けられます。 列のアイテムレンダラーは、
デフォルトでは、アイテムレンダラーはセルの境界に合わせてクリップしません。レンダラーがセルの境界を超えてしまう場合は、
DataGrid アイテムレンダラーのトランジションがサポートされていません。 GridItemRenderer クラスの
効率に関する考慮事項
DataGrid のスクロールと起動のパフォーマンスは、アイテムレンダラーの複雑さと DataGrid のスクローラー内に表示されるアイテムレンダラーの数と直接関係があります。カスタム GridItemRenderer のインスタンスは繰り返し再使用されるため、これらのインスタンスをできるだけ単純かつ効率的に定義することが重要です。
アイテムレンダラーの役割が 1 行以上のテキストの表示に限定されている場合、開発者はその処理を非常に経済的に実行できる DefaultItemRenderer クラスの使用を真剣に検討する必要があります(Windows のみにデプロイされるアプリケーションの場合は、UITextFieldGridItemRenderer クラスを代わりに使用すると、さらにパフォーマンスが向上します)。GridItemRenderer を使用して GridColumn の dataField をテキストとして表示する最も効率的な方法は、
プロパティがアイテムレンダラーのデータに依存するビジュアルエレメントが複数含まれているアイテムレンダラーでは、データバインディングを使用してプロパティの値を定義できます。この方法では、読みやすく保守しやすい MXML コードが生成され、表示されるアイテムレンダラーの数が限られている場合は、十分なパフォーマンスが得られます(DataGrid の
GridItemRenderer はできるだけ簡単にする必要があります。最高のパフォーマンスを得るために、コンポーネントの数と階層の深さはできるだけ少なくします。実際的であれば、制約ではなく明示的な位置とサイズを使用してレイアウトを定義します。
ここで説明する GridItemRenderer の様々な設定は、例の節に示されています。
このメソッドが直接呼び出されることは意図されていません。 このメソッドは、DataGrid の実装によって呼び出されます。
必要な動作がデフォルトの動作と異なる場合は、GridItemRenderer のサブクラスで値を返すようにこのメソッドをオーバーライドする必要があります。
Flex 4.0 では、主な 3 つの状態は、"normal"、"hovered"、および "selected" でした。 Flex 4.5 では、"down" および "downAndSelected" が追加されました。
サポートされている全状態(優先順)を次に示します。
このメソッドを使用して、レンダラーのすべてのビジュアルエレメントとプロパティを設定できます。このメソッドを使用すると、
このメソッドが直接呼び出されることは意図されていません。 このメソッドは、DataGrid の実装によって呼び出されます。
アイテムレンダラーは、このプロパティ定義をオーバーライドして、グリッドの行全体のデータにアクセスできます。
List アイテムレンダラーとは異なり、Grid アイテムレンダラーには、ダウンインジケーターを表示する排他的な役割はありません。Grid 自体は、選択された行またはセルのダウンインジケーターをレンダリングします。アイテムレンダラーは、そのビジュアルプロパティを変更して、押下されていることを強調することもできます。
List アイテムレンダラーとは異なり、Grid アイテムレンダラーには、レンダラーまたはその行がマウスの下にあることを表示する排他的な役割はありません。Grid 自体は、マウスポインターが置かれた行またはセルに対して、hoverIndicator スキンパーツを自動的に表示します。Grid アイテムレンダラーは、そのプロパティを変更して、マウスポインターが置かれていることを強調することもできます。
List アイテムレンダラーとは異なり、Grid アイテムレンダラーには、自分が選択範囲の一部であることを表示する排他的な役割はありません。Grid 自体は、選択された行またはセルに対して、selectionIndicator スキンパーツを自動的に表示します。また、アイテムレンダラーは、選択範囲の一部であることを強調するためにビジュアルプロパティを変更できます。
List アイテムレンダラーとは異なり、Grid アイテムレンダラーには、自分のセルまたは行にキャレットがあることを表示する排他的な役割はありません。Grid 自体は、キャレット行またはキャレットセルに対して、caretIndicator スキンパーツを自動的に表示します。また、アイテムレンダラーは、キャレットがあることを強調するためにビジュアルプロパティを変更できます。
アイテムエディターのプロパティはすべて、エディターセッションの開始時にオーナーによって設定されます。
エディターが閉じられたら、入力値を保存またはキャンセルできます。 保存する場合、エディターによって
このメソッドは直接呼び出さないでください。 アイテムエディターをホストするコントロールによってのみ呼び出される必要があります。
このメソッドは直接呼び出さないでください。 アイテムエディターをホストするコントロールによってのみ呼び出される必要があります。
このメソッドは直接呼び出さないでください。 アイテムエディターをホストするコントロールによってのみ呼び出される必要があります。エディターを保存して閉じるには、アイテムレンダラーのオーナーの
<s:GridItemEditor>
tag inherits all of the tag
attributes of its superclass and adds the following tag attributes:
<s:GridItemEditor Properties column="null" data="null" imeMode="null" itemRenderer="null" rowIndex="0" value="null" />]]>
アイテムエディターはグリッドの各列に関連付けられています。
このメソッドは直接呼び出さないでください。 アイテムエディターをホストするコントロールによってのみ呼び出される必要があります。
このメソッドは直接呼び出さないでください。 アイテムエディターをホストするコントロールによってのみ呼び出される必要があります。
このメソッドは直接呼び出さないでください。 アイテムエディターをホストするコントロールによってのみ呼び出される必要があります。エディターを保存して閉じるには、アイテムレンダラーのオーナーの
flash.system.IMEConversionMode クラスで、このプロパティの有効な値の定数を定義します。IME を指定しない場合は、
デフォルトでは、
カスタムアイテムレンダラーの多くは、このプロパティの getter および setter メソッドをオーバーライドします。 setter メソッドをオーバーライドして、セル値に基づいてエディターを初期化します。 getter メソッドをオーバーライドして、新しいセル値を
レンダラーのプロパティはすべて、親の
再利用可能レンダラーの内部「フリー」リストに追加する場合や再利用される可能性がない場合など、アイテムレンダラーが不要になったら、IGridItemRenderer の
このメソッドが直接呼び出されることは意図されていません。 このメソッドは、DataGrid の実装によって呼び出されます。
このメソッドを使用して、レンダラーのすべてのビジュアルエレメントとプロパティを設定できます。このメソッドを使用すると、
このメソッドが直接呼び出されることは意図されていません。 このメソッドは、DataGrid の実装によって呼び出されます。
List アイテムレンダラーとは異なり、Grid アイテムレンダラーには、ダウンインジケーターを表示する排他的な役割はありません。Grid 自体は、選択された行またはセルのダウンインジケーターをレンダリングします。アイテムレンダラーは、そのビジュアルプロパティを変更して、押下されていることを強調することもできます。
List アイテムレンダラーとは異なり、Grid アイテムレンダラーには、レンダラーまたはその行がマウスの下にあることを表示する排他的な役割はありません。Grid 自体は、マウスポインターが置かれた行またはセルに対して、hoverIndicator スキンパーツを自動的に表示します。Grid アイテムレンダラーは、そのプロパティを変更して、マウスポインターが置かれていることを強調することもできます。
GridItemRenderer クラスは、
List アイテムレンダラーとは異なり、Grid アイテムレンダラーには、自分が選択範囲の一部であることを表示する排他的な役割はありません。Grid 自体は、選択された行またはセルに対して、selectionIndicator スキンパーツを自動的に表示します。また、アイテムレンダラーは、選択範囲の一部であることを強調するためにビジュアルプロパティを変更できます。
List アイテムレンダラーとは異なり、Grid アイテムレンダラーには、自分のセルまたは行にキャレットがあることを表示する排他的な役割はありません。Grid 自体は、キャレット行またはキャレットセルに対して、caretIndicator スキンパーツを自動的に表示します。また、アイテムレンダラーは、キャレットがあることを強調するためにビジュアルプロパティを変更できます。
次の例は、ComboBoxGridItemEditor をアイテムエディターとして使用している GridColumn を示しています。
<s:GridColumn dataField="quant" headerText="Qty"> <s:itemEditor> <fx:Component> <s:ComboBoxGridItemEditor> <s:dataProvider> <s:ArrayList> <fx:int>0</fx:int> <fx:int>1</fx:int> <fx:int>2</fx:int> <fx:int>3</fx:int> </s:ArrayList> </s:dataProvider> </s:ComboBoxGridItemEditor> </fx:Component> </s:itemEditor> </s:GridColumn>