GridItemRenderer
コンテンツを検証した後に赤い境界線を表示するエラー状態で作成しましdata[column.dataField]
た。スクロール以外はすべて機能します...一番上のアイテムがエラー状態にありdata[column.dataField]
、一番上のセルにnullしかないため、他のすべてが正常であるとします。次に、バーを1行下にスクロールします。新しい行が表示されようとすると、オーバーライドされたgetCurrentRendererStateが呼び出され、nullかどうかを確認します。通常の状態に変更する必要がありますが、この時点ではdata[column.dataField]
まだトップがあります。行の値は、検証を行った後data[column.dataField]
でも、現在のセルに現在のデータが表示されている場合でもnullのままです...では、どうすれば現在のセルの値を取得できますか?
<fx:Script>
<![CDATA[
import custom_events.DataGridValidationEvent;
private function creationComplete():void{
owner.parent.parent.addEventListener(DataGridValidationEvent.VALIDATE,doValidation);
}
private function doValidation(e:DataGridValidationEvent):void{
currentState=data[column.dataField]?"normal":"error";
}
override public function get label():String{
return lblCell.text;
}
override public function set label(value:String):void{
currentState=data?data[column.dataField]?"normal":"error":"normal"
lblCell.text=value;
}
override protected function getCurrentRendererState():String{
return data?data[column.dataField]?"normal":"error":"normal";
}
]]>
</fx:Script>
<s:states>
<s:State name="normal"/>
<s:State name="error"/>
</s:states>
<s:Rect left="1" right="0" top="1" bottom="0" includeIn="error">
<s:stroke>
<s:SolidColorStroke color="0xFF001A" weight="1"/>
</s:stroke>
</s:Rect>
<s:Label id="lblCell" width="100%" height="100%" verticalAlign="middle"
paddingLeft="5" paddingRight="5" paddingTop="3" maxDisplayedLines="1"
showTruncationTip="true"/>