jQuery MiniUI

 找回密码
 立即注册
查看: 4864|回复: 7
打印 上一主题 下一主题

grid行内编辑 单元格验证问题 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2017-5-17 10:29:55 |只看该作者 |倒序浏览
如何通过某一列的值验证其他某些列?比如:A、B两列,需验证A>B的值,先填写A=3,再填写B=4则验证不通过,B单元格变红色提示错误。现在去编辑A,改为A=6,则验证通过,但B的错误提示和红色怎么取消?
function onCellValidation(e) {
     if(e.field == A) {
         if(e.value<e.record.B) {
             e.errorText = "A不能小于B";
             e.isValid = false;
         }
     }
     if(e.field ==B) {
         if(e.value>e.record.A) {
             e.errorText = "B不能大于A";
             e.isValid = false;
         }
     }
}

Rank: 8Rank: 8

沙发
发表于 2017-5-17 11:21:45 |只看该作者
需要再次触发B单元格的验证,默认的验证只验证当前编辑完的单元格。
可以在编辑完后主动调用方法去验证指定单元格。
grid.validateCell(row, column);
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 2

板凳
发表于 2017-5-17 11:48:14 |只看该作者
dforce 发表于 2017-5-17 11:21
需要再次触发B单元格的验证,默认的验证只验证当前编辑完的单元格。
可以在编辑完后主动调用方法去验证指定 ...

明白了,这样是可以解决问题,但是使用setTimeout()的方式有点。。。。不知道有没有其他方式?比如设置某个指定单元格验证通过的方法?

Rank: 8Rank: 8

地板
发表于 2017-5-17 13:10:21 |只看该作者
黑屏了0v0 发表于 2017-5-17 11:48
明白了,这样是可以解决问题,但是使用setTimeout()的方式有点。。。。不知道有没有其他方式?比如设置某 ...

没什么问题的,就这样用吧,
在oncellvalidation事件中,可以指定某单元格强制通过验证。
e.setIsValue=true;

Rank: 2

5#
发表于 2017-5-17 13:31:48 |只看该作者
dforce 发表于 2017-5-17 13:10
没什么问题的,就这样用吧,
在oncellvalidation事件中,可以指定某单元格强制通过验证。
e.setIsValue=tr ...

好的,谢谢

Rank: 2

6#
发表于 2017-11-28 14:39:07 |只看该作者
本帖最后由 kubi 于 2017-11-28 14:44 编辑
dforce 发表于 2017-5-17 13:10
没什么问题的,就这样用吧,
在oncellvalidation事件中,可以指定某单元格强制通过验证。
e.setIsValue=tr ...

那要如何在事件里获得其他单元格?

    var record=e.record;
    if(e.field=="PLOVRFRHH"||e.field=="PLOVRTOHH"){
       if(record.PLOVRFRHH!=""&&record.PLOVRTOHH!=""){
            if(record.PLOVRFRHH>=record.PLOVRTOHH){
                    e.errorText = "<?php echo $this->translate("起迄时有误");?>";     
                    e.isValid = false;  
                }else{
                        如何在事件里获得另一个单元格,并让它的强制通过验证
                    }
           }
     }

validateCell这个方法是否是最近的版本才有的?

Rank: 8Rank: 8

7#
发表于 2017-11-28 15:41:21 |只看该作者
kubi 发表于 2017-11-28 14:39
那要如何在事件里获得其他单元格?

    var record=e.record;

cell是个由row和column组成的一个对象,只能通过重新验证才能触发编辑。
var row=e.record;
var column=grid.getColumn(columnName)
var cell=[row,column]
grid.setrCurrentecell(cell)

Rank: 2

8#
发表于 2017-11-28 15:58:58 |只看该作者
felt 发表于 2017-11-28 15:41
cell是个由row和column组成的一个对象,只能通过重新验证才能触发编辑。
var row=e.record;
var column=g ...

var row=e.record;
var column=grid.getColumn(columnName)
grid.validateCell(row,column);
这样就能让某个单元格进行验证么?
其实我也是遇到了楼主的问题。如果不用定时器的话,那应该如何做呢?
我看你上面说可以用e.setIsValue=true让单元格的验证结果变成true,但是我不知道该如何在1单元格验证后获得2单元格的对象将其的验证结果变true

Archiver|普加软件

GMT+8, 2024-9-29 15:29 , Processed in 1.054423 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部