Easyui合并单元格 再进行编辑单元格 单元格所在的行错位 及自定义验证

$.extend($.fn.validatebox.defaults.rules, {
                PositiveNumber : {// 整数
                    validator:function(value,param){
                        return value >= 1;
                    },
                    message: '请输入不小于1的整数'
                },
                IntNumber:{
                    validator:function(value,param){
                        var n = /[^\d]/g;
                        var re = new RegExp(n);
                        return !re.test(value)
                    },
                    message:'请输入正整数'
                },
                intOrFloat : {// 验证整数或小数
                    validator : function(value) {
                        return /^\d+(\.\d+)?$/i.test(value);
                    },
                    message : '请输入数字,并确保格式正确'
                }
            });




var editIndex = undefined;
function onClickRow(index,data) {
    if (editIndex == undefined){
    	//编辑单元格
        $('#itemsetgrid').datagrid('selectRow', index).datagrid('beginEdit', index);
        //拿到编辑的单元格的值,field:'para' 列明为para
        var ed = $('#itemsetgrid').datagrid('getEditor', {index:index,field:'para'});
        //进行单元格填的值进行校验
        if(data.type ==  'int'){
            $(ed.target).validatebox({
                validType: 'IntNumber'
            });
        }else if(data.type ==  'float'){
            $(ed.target).validatebox({
                validType: ' intOrFloat'
            });
        }else if(data.type ==  'string'){
            var selectvalue = data.selectvalue;
            var array = selectvalue.split(",");
            $.extend($.fn.validatebox.defaults.rules, {
                selectValue:{
                    validator : function(value) {
                        var result = false;
                        for(var i = 0; i < array.length; i++) {

                            if(array[i] == value) {
                                result =  true;
                            }
                        }
                        if(result){
                            return true;
                        }else{
                            return false;
                        }
                    },
                    message : '请输入正确格式'
                }
            });
            $(ed.target).validatebox({
                validType: 'selectValue'
            });
        }
        editIndex = index;

    }else{

        $('#itemsetgrid').datagrid('endEdit', editIndex);
         var item =[]
        var rows = $("#itemsetgrid").datagrid("getData");//所有行的数据
        
        
        onLoadSuccess(rows);//**在调一次合并单元格的方法,如果没有在调用编辑的时间会错乱**
        
        
        $('#itemsetgrid').datagrid('selectRow', index).datagrid('beginEdit', index);
        var ed = $('#itemsetgrid').datagrid('getEditor', {index:index,field:'para'});//拿到编辑的单元格
        if(data.type ==  'int'){
            $(ed.target).validatebox({  //给单元格动态加上自定义的校验
                validType: 'IntNumber'
            });
        }else if(data.type ==  'float'){
            $(ed.target).validatebox({
                validType: ' intOrFloat'
            });
        } else if(data.type ==  'string'){
            var selectvalue = data.selectvalue;// true,false
            var array = selectvalue.split(",");//变成数组
            $.extend($.fn.validatebox.defaults.rules, {
                selectValue:{
                    validator : function(value) {
                        var result = false;
                        for(var i = 0; i < array.length; i++) {
                            if(array[i] == value) {//判断字符串是否是在数组中
                                result =  true;
                            }
                        }
                        if(result){
                            return true;
                        }else{
                            return false;//false就会返回信息
                        }
                    },
                    message : '请输入正确格式'
                }
            });
            $(ed.target).validatebox({
                validType: 'selectValue'
            });
        }
        editIndex = index;

    }

}




function onLoadSuccess(data){
   var mark=1;
   for (var i=1; i <data.rows.length; i++) {
       if (data.rows[i]['modulename'] == data.rows[i-1]['modulename']) { //后一行的值与前一行的值做比较,相同就需要合并
           mark += 1;
           
           //这里不能用this,要用具体名称!!!
           $("#itemsetgrid").datagrid('mergeCells',{ 
               index: i+1-mark,
               field: 'modulename',
               rowspan:mark     //纵向合并的格数,如果想要横向合并,就使用colspan:mark
          
           });
       }else{
           mark=1;
       }
   }
}

在这里插入图片描述

没有再调用onLoadSuccess(rows)就会错乱

onLoadSuccess方法里不能用this来指定grid,要用具体的名字itemsetgrid

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值