对深入浅出提供表格验证方法出现的bug进行改进。

//验证表格数据是否合法       思路:检查modified中每个record 根据每个属性的editor对record中的属性进行验证。

var records = store.getModifiedRecords();
    if(records.length<1){
     return ;
    }
    for(var j=0;j<records.length;j++){
     var record = records[j];//得到一个record
     var fields = record.fields.keys;//fields里面是record的属性数组
     for(var i = 0 ;i<fields.length;i++){/ /检测record的每个字段值是否合法   //根据fields里面的属性 检测每一个record
      var name = fields[i];
      var value = record.data[name];//根据record得到属性值
      var cm = grid.getColumnModel();
      var colIndex = cm.findColumnIndex(name);//根据名称找到它在grid所在的列
      if(colIndex == -1)continue;//如果不在grid列里面进行下一次循环
      var rowIndex = store.indexOfId(record.id);//得到当前验证属性的行
      if(null!=cm.getCellEditor(colIndex)){
       cm.getCellEditor(colIndex).field.reset();//因为field中还保存着数据 只是没有显示出来,
                                                                     //当验证record的时候field会把record中属性的空值替换成field的值 那么allowblank=false验证失败
       var editor = cm.getCellEditor(colIndex).field;//得到每一个editor的Ext.form.field对象。利用field进行验证
       if(!editor.validateValue(value)){
        Ext.Msg.alert("提示","数据不完整",function(){
         grid.startEditing(rowIndex,colIndex);
        });
        return false;
       }
      }
     }
    }

深入浅出提供表格验证方法出现的bug:(它的方法就不贴出来了)

cm.getCellEditor(colIndex).field.reset();//

当我在editorGridpanel 新增一条数据的时候 原方法能验证出record的错误 我就把数据编辑完整保存
新增第二条数据的时候  验证结果跟逻辑不符了
于是就用火狐debug
发现 textfield组件的getErrors方法(textfield用它来验证数据的)
第37770 value = value || this.processValue(this.getRawValue());
当value为空时就会执行this.processValue(this.getRawValue());  得到textfield的当前值
虽然textfield编辑完后被隐藏 但是textfield上面的值还是没有被清空,所以value就被换成上一次编辑遗留下来的数据,allowBlank:false验证失败
所以必须在对数据验证之前将其清空了 所以

cm.getCellEditor(colIndex).field.reset();//

 
 
37767 getErrors: function(value) {
37768 var errors = Ext.form.TextField.superclass.getErrors.apply(this, arguments);
37769
37770 value = value || this.processValue(this.getRawValue());
37771
37772 if (Ext.isFunction(this.validator)) {
37773 var msg = this.validator(value);
37774 if (msg !== true) {
37775 errors.push(msg);
37776 }
37777 }
37778
37779 if (value.length < 1 || value === this.emptyText) {
37780 if (this.allowBlank) {
37781
37782 return errors;
37783 } else {
37784 errors.push(this.blankText);
37785 }
37786 }
37787
37788 if (!this.allowBlank && (value.length < 1 || value === this.emptyText)) {
37789 errors.push(this.blankText);
37790 }
37791
37792 if (value.length < this.minLength) {
37793 errors.push(String.format(this.minLengthText, this.minLength));
37794 }
37795
37796 if (value.length > this.maxLength) {
37797 errors.push(String.format(this.maxLengthText, this.maxLength));
37798 }
37799
37800 if (this.vtype) {
37801 var vt = Ext.form.VTypes;
37802 if(!vt[this.vtype](value, this)){
37803 errors.push(this.vtypeText || vt[this.vtype +'Text']);
37804 }
37805 }
37806
37807 if (this.regex && !this.regex.test(value)) {
37808 errors.push(this.regexText);
37809 }
37810
37811 return errors;
37812 },

ext editorGridpanel 验证相关推荐

  1. ext form验证tip_FormValidator表单验证

    表单校验测试 验证表单之文本输入框 用户名: 性别: 男女 出生年月: 身份证号 邮箱 学历 --请选择-- 专科 本科 研究生 硕士 博士 国家区号 -地区区号 -电话号码 -分机号码 兴趣爱好 乒 ...

  2. Ext EditorGridPanel 单元格锁定

    grid.on('beforeedit',function(obj){      //grid,record,field,value,row,column,cancel var checkStatus ...

  3. 使用Ext Form自动绑定Html中的Form元素

    2019独角兽企业重金招聘Python工程师标准>>> Java代码   //把ext 对象绑定在Html Form元素时的ext属性中 Ext.override(Ext.Compo ...

  4. EditorGridPanel 中使用checkbox列,并包含afterEdit事件

    在EditorGridPanel中无法使用默认的CheckBox控件,因此采用第三方扩展的控件实现, 以下是Ext.grid.CheckColu扩展类: Ext.grid.CheckColumn = ...

  5. [理论]领域驱动设计 DDD 是啥,cqrs是啥

    父文章 如何成为一名架构师,架构师成长之路_个人渣记录仅为自己搜索用的博客-CSDN博客_架构师成长之路 [落地版]领域驱动落地 [理论版]领域驱动设计DDD 代码框架 · 语雀 子文章 如何写可维护 ...

  6. Postfix+dovecot 部署

    Postfix+dovecot 部署 Postfix: 是一个标准的MTA(Mail Transfer Agent)服务器,它负责通过SMTP协议管理发送到本机的邮件以及由本机发向外界的邮件.在本文中 ...

  7. Ext.NET加入自定义验证JS函数

    ExtJS验证很方便,在使用FormPanel的时候,我们可以很方便的进行验证.比如设置必填项.正则.字段类型等等.比如如下所示: 上面的验证是这么写的: <Listeners><C ...

  8. Ext.Net中常用的验证

    在Ext.Net中没一中控件都自带了很多验证如:allBlank,maxlength,minlength等.但在一些特殊的情况下我们就需要一些特殊的验证: 1.Regex:自己写正则表达是验证,Reg ...

  9. 关于Ext中EditorGridPanel数据校验

    用了2年的Ext 渐渐对Ext熟络起来,经常去看下源码,自己瞎琢磨些功能,最近做了个EditorGridPanel数据校验,原理不难,不过绝对原创,有点意思,发下和大家分享~ 原理:通过EditorG ...

最新文章

  1. 44)PHP,多个数据库查询(我没试)
  2. 快速软件开发 学习笔记 之六
  3. pgsql函数定时更新表_Postgresql PL/PGSQL 程序语言系列 1 (存储过程过时了吗,与函数)...
  4. uva 12730(期望经典)
  5. python中的变量的学习
  6. 【oracle】sql处理重复数据
  7. UNIX 操作系统体系结构调整
  8. id导出pdf失败_InDesign 导出印刷用PDF时如何设置?
  9. HDU 5143 NPY and arithmetic progression(思维)
  10. 关于信号发生器的功能和参数介绍(一)
  11. SecureCRT远程连接虚拟机
  12. Vue入门笔记Day 8
  13. Gi t 折磨疯了的SSL证书问题
  14. 做了个后末日朋克风的梦
  15. 电脑声音同步到手机,蓝牙耳机连接台式电脑另类解决方案
  16. java set list map_Java中的Set,List,Map
  17. android 手机同时使用wifi 和数据流量(3G/4G...)
  18. 64位应用程序的开发
  19. 计科1111-1114班第一周讲义、课外作业(截止日期:2014年3月12日23点-周三晚,学委飞信通知同学)
  20. 百度APIStore

热门文章

  1. pyav 音频转换小函数 wav 转 mp3 ogg等
  2. day3之2020年12月29日产品经理学习之需求管理
  3. 显示器显示“输入不支持”
  4. ACM算法总结 平面几何
  5. 2008-03-08 好高兴啊,体验了准妈妈的感觉
  6. 不是有效Win32程序,VS2015编译C++在XP上运行
  7. Linux学习日常-jdk17下载安装
  8. 实习生我劝你用力卷!
  9. 投资风险的度量-组合方差、回归方程的计算
  10. 技嘉主板raid组建方法_【技嘉Z170评测】M.2硬盘也能组RAID 技嘉Z170X-UD5评测_技嘉 Z170X-UD5_主板评测-中关村在线...