データグリッド(DataGrid)について †

データグリッドは、Excelのような行と列を持った表形式のデータを表示するのに適したコントロールです。標準コンポーネントです。

DataGrid コンポーネントの用途 †

DataGridは、Excelのような行と列を持つ表形式のデータを表示するのに適したコントロールです。統計データや、名簿、家計簿など、さまざまな用途に使えると思います。

基本的な使い方 †

以下のようなタグをソースに挿入します。

<mx:DataGrid x="10" y="10"/>
動作の記述 †

DataGrid のデータも dataProvider にデータを指定することで表示することができます。dataProviderは、List の時と同じでArrayCollection を指定します。

file:TestGrid.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <!-- データの定義 -->
    <mx:ArrayCollection id="person_ary">
        <mx:Object name="佐藤一郎" age="30" email="ichiro@example.com"/>
        <mx:Object name="鈴木次郎" age="28" email="jiro@example.com"/>
        <mx:Object name="田中三郎" age="25" email="3rou@example.com"/>
        <mx:Object name="竹内四郎" age="21" email="siro@example.com"/>
    </mx:ArrayCollection>
    <!-- DataGridの定義 -->
    <mx:DataGrid x="30" y="30"
        dataProvider="{person_ary}"/>
</mx:Application>

実行結果を見ると、ArrayCollection型のデータに指定したフィールド名をヘッダに冠したグリッドが表示されます。

フィールド名を日本語にすれば、ヘッダも日本語になるのですが、それは根本的な解決になりません。そこで、データグリッドでは、表示したい列の項目を、詳しく指定することができるようになっています。

表示列のカスタマイズは以下のように記述します。

 <mx:DataGrid x="30" y="30"
     dataProvider="{person_ary}">
     <mx:columns>
         <mx:DataGridColumn dataField="name" headerText="名前"/>
         <mx:DataGridColumn dataField="age" headerText="年齢"/>
         <mx:DataGridColumn dataField="email" headerText="メール"/>
     </mx:columns>
 </mx:DataGrid>

<mx:DataGrid>タグの中に、<mx:columns>を記述し、<mx:DataGridColumn>で、詳しい列の表示設定を行います。

<mx:DataGridColumn>タグでは、ヘッダに表示するテキストだけでなく、列の幅や、右寄せなどの設定を行うこともできます。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <!-- データの定義 -->
    <mx:ArrayCollection id="person_ary">
        <mx:Object name="佐藤一郎" age="30" email="ichiro@example.com"/>
        <mx:Object name="鈴木次郎" age="28" email="jiro@example.com"/>
        <mx:Object name="田中三郎" age="25" email="3rou@example.com"/>
        <mx:Object name="竹内四郎" age="21" email="siro@example.com"/>
    </mx:ArrayCollection>
    <!-- DataGridの定義 -->
    <mx:DataGrid x="30" y="30"
        dataProvider="{person_ary}">
        <mx:columns>
            <mx:DataGridColumn dataField="name"
                headerText="名前"
                width="80"/>
            <mx:DataGridColumn dataField="age" 
                headerText="年齢"
                textAlign="right"
                width="60"/>
            <mx:DataGridColumn dataField="email" headerText="メール"/>
        </mx:columns>
    </mx:DataGrid>
</mx:Application>

グリッドをクリックした時の動作 †

グリッドの行をクリック選択したときに、何か処理を行う場合は、DataGridの click イベントのイベントハンドラを設定します。

以下のプログラムは、グリッドの行をクリックすると、名前と電話番号をダイアログに表示する例です。

file GridClick.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <!-- データの定義 -->
    <mx:ArrayCollection id="person_ary">
        <mx:Object name="佐藤一郎" tel="080-xxx-1111" />
        <mx:Object name="鈴木次郎" tel="080-xxx-1112"/>
        <mx:Object name="田中三郎" tel="080-xxx-1113"/>
    </mx:ArrayCollection>
    <!-- DataGridの定義 -->
    <mx:DataGrid x="30" y="30"
        id="a_grid"
        dataProvider="{person_ary}"
        click="onClick()">
        <mx:columns>
            <mx:DataGridColumn headerText="名前" dataField="name"/>
            <mx:DataGridColumn headerText="電話" dataField="tel"/>
        </mx:columns>
    </mx:DataGrid>
    <!-- スクリプト -->
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            private function onClick():void {
                var sel:Object = a_grid.selectedItem; // ---(*1)
                if (sel == null) return;
                Alert.show(sel.name + "\n" + sel.tel);
            }
        ]]>
    </mx:Script>
</mx:Application>

→グリッドをクリックするとクリックした行の情報を表示します。

選択している行を表すのが、selectedItem です。プログラム中の(*1)のように、選択している行のデータをObject型で取得することができます。

DataGridへのアイコンの表示 †

DataGridにアイコンを表示するには、グリッドの列の定義で、独自のアイテムレンダラーを表示するように指定します。

アイコンを表示するだけのアイテムレンダラーは次のように定義できるでしょう。

 <!-- アイコンを表示するレンダラーを定義 -->
 <mx:Component id="icon_renderer">
     <mx:HBox horizontalAlign="center">
         <mx:Image source="{data.icon}" height="50" width="50"/>
     </mx:HBox>
 </mx:Component>

Imageのsource属性で「{data.icon}」を指定しているので、データを定義するときは、次のように icon プロパティを追加します。

    <!-- データの定義 -->
    <mx:ArrayCollection id="person_ary">
        <mx:Object name="佐藤一郎" age="30" icon="kingyo.png"/>
    </mx:ArrayCollection>

そして、グリッド列の定義でアイテムレンダラーを指定します。

<mx:DataGridColumn itemRenderer="{icon_renderer}" .. />

このように記述することで、以下のようなアイコン表示が可能なグリッドを作成できます。

まとめ [#aefc33f7] †

  • DataGridを使うと、表形式のデータを表示できます。
  • アイテムレンダラーを定義することによりアイコンを表示するグリッドが作れます。


コメント:
お名前:

 

作成:2008-07-12 13:40:54/更新:2008-07-12 13:41:13

Flex Component by kujirahand RSS

konawiki 0.23