当我点击一个单元格来编辑一个值并输入一个与原始值偏离一定百分比的新值时,我试图让我的柔性DataGrid请求确认更改。我看不出有什么容易的办法。最初,我尝试编写一个itemEditorValidatorFunction,它返回一个布尔值。这对于硬编码的返回值非常有效,但是如果我试图从警报的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;
}我还试图为网格编写一个itemEditor :FlexDataGridColumn,在这里我扩展了com.flexicious.controls.TextInput,但是我无法确定要重写哪个方法。我想要重写该方法,并且只有在单击“警报”时才调用“超级”,但我看不出应该重写哪种方法。我尝试过覆盖受保护的函数onTextInput(textEvent:TextEvent):void,但这没有效果。
如果能对这个问题有任何见解,我将不胜感激。
发布于 2014-09-08 09:55:38
这就是起作用的地方:
private function validateGcCap(editor:UIComponent):Boolean{
var warningBPDiffVal:Number = Number(5);
var cell:IFlexDataGridCell = managerGrid.getCurrentEditingCell();
var warningPerCentDiffVal:Number = Number(warningBPDiffVal / 1000);
var origGcCapVal:Number = Number(cell.text);
var newGcCapVal:Number = Number((editor as TextInput).text);
var diffVal:Number = Number(newGcCapVal - origGcCapVal);
if (origGcCapVal > newGcCapVal){
diffVal = origGcCapVal - newGcCapVal;
}
if (diffVal > warningPerCentDiffVal){
function alertCloseHandler(event:CloseEvent):void{
if (event.detail == Alert.CANCEL) {
IAParamsVO(cell.rowInfo.data).gcCapWrapper = origGcCapVal;
managerGrid.refreshCells();
}
}
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 true;
}发布于 2014-09-05 03:28:55
不知道为什么有人决定否决你的问题,这似乎很有道理。从这个角度来看,当用户在框中选择no时,最好的方法是“撤消”编辑。如果打开enableTrackChanges,则只需从dgGrid.changes集合中删除该更改并调用dgGrid.refreshCells()即可。如果您没有enableTrackChanges,只需用旧值更新dataProvider行,调用dgGrid.refreshCells(),就可以设置。
https://stackoverflow.com/questions/25668602
复制相似问题