首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在灵活网格中添加具有弹出窗口确认的itemEditorValidatorFunction

在灵活网格中添加具有弹出窗口确认的itemEditorValidatorFunction
EN

Stack Overflow用户
提问于 2014-09-04 14:51:59
回答 2查看 97关注 0票数 1

当我点击一个单元格来编辑一个值并输入一个与原始值偏离一定百分比的新值时,我试图让我的柔性DataGrid请求确认更改。我看不出有什么容易的办法。最初,我尝试编写一个itemEditorValidatorFunction,它返回一个布尔值。这对于硬编码的返回值非常有效,但是如果我试图从警报的CloseEvent获取返回值,则忽略该值:

代码语言:javascript
复制
    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,但这没有效果。

如果能对这个问题有任何见解,我将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-08 09:55:38

这就是起作用的地方:

代码语言:javascript
复制
    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;
    }
票数 0
EN

Stack Overflow用户

发布于 2014-09-05 03:28:55

不知道为什么有人决定否决你的问题,这似乎很有道理。从这个角度来看,当用户在框中选择no时,最好的方法是“撤消”编辑。如果打开enableTrackChanges,则只需从dgGrid.changes集合中删除该更改并调用dgGrid.refreshCells()即可。如果您没有enableTrackChanges,只需用旧值更新dataProvider行,调用dgGrid.refreshCells(),就可以设置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25668602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档