2011/12/24

AdvancedDataGridColumnのlabelFunctionのsetStyleはメソッド評価時のみ

AdvancedDataGridColumnのlabelFunctionのsetStyleはメソッド評価時のみ
AdvancedDataGridColumnは、labelFunction中でdataFieldの値を評価した結果で
表示スタイルを設定すると、他の要因でスタイルが変化されたときに打ち消される。

当たり前といえばそうなんだけども、はまったのでメモ。

たとえばGrid上のマウスオーバー等で色が変わったあとマウスアウトすると
スタイルが元に戻る。


1.初期状態

2. IDが赤色の列でマウスオーバー

3.マウスアウト





 private function idLabelFunction(item:Object, col:AdvancedDataGridColumn):String{
 var id:String = item.id as String;
 if(id=="1"){
 col.setStyle("color", 0xFF0000);
 } else if (id=="2"){
 col.setStyle("color", 0x00FF00);
 } else {
 col.setStyle("color", 0x0000FF);
 }

 return item.id;
 }
 ]]>
 </fx:Script>
 <fx:Script source="scripts/testFlash.as" />
 <s:VGroup>

 <mx:AdvancedDataGrid id="data" designViewDataType="tree" dataProvider="{contents}"
  sortExpertMode="true">
 <mx:columns>
 <mx:AdvancedDataGridColumn headerText="ID" dataField="id" draggable="true" labelFunction="idLabelFunction"/>
 <mx:AdvancedDataGridColumn headerText="Name" dataField="name" color="0x0000FF"/>
 <mx:AdvancedDataGridColumn headerText="City" dataField="city" labelFunction="cityLabelFunction"/>
 </mx:columns>
 </mx:AdvancedDataGrid>

0 件のコメント:

コメントを投稿