セルをクリックして値を編集し、元の値から一定の割合だけ逸脱した新しい値を入力すると、Flexicious DataGrid に変更の確認を求めさせようとしています。これを行う簡単な方法がわかりません。最初に、ブール値を返す itemEditorValidatorFunction を作成しようとしました。これは、ハード コードされた戻り値に対しては完全に機能しますが、Alert の CloseEvent から戻り値を取得しようとすると、その値は無視されます。
protected function validateGcCap(editor:UIComponent):Boolean{
var warningBPDiffVal:Number = Number(5);
var warningPerCentDiffVal:Number = Number(warningBPDiffVal / 1000);
var allowChange:Boolean = true;
var origGcCapVal:Number = Number(managerGrid.getCurrentEditingCell().text);
var newGcCapVal:Number = Number((editor as TextInput).text);
var diffVal:Number = Number(newGcCapVal - origGcCapVal);
if (origGcCapVal > newGcCapVal) {
diffVal = origGcCapVal - newGcCapVal;
}
if (diffVal > warningPerCentDiffVal) {
//Alert.show("you changed the gccap from " + origGcCapVal + " to " + newGcCapVal + " by " + diffVal);
function alertCloseHandler(event:CloseEvent):void{
if (event.detail == Alert.CANCEL) {
allowChange = false;
}
};
var alert:Alert = Alert.show("Are you sure that you want to update gcCap% by more than " + warningBPDiffVal + "bps?",
"Please Confirm", (Alert.OK | Alert.CANCEL),
this, alertCloseHandler);
}
return allowChange;
}
また、com.flexicious.controls.TextInput を拡張した grids:FlexDataGridColumn の itemEditor を作成しようとしましたが、どのメソッドをオーバーライドするかがわかりませんでした。メソッドをオーバーライドして、Alert が OK をクリックした場合にのみ super を呼び出したいと思っていましたが、どのメソッドをオーバーライドする必要があるかわかりませんでした。保護された関数 onTextInput(textEvent:TextEvent):void をオーバーライドしようとしましたが、何もしませんでした。
この問題についての洞察に感謝します。