不对网格列排序/过滤器调用字段的KendoGrid验证

时间:2013-06-03 16:34:42

标签: validation kendo-ui kendo-grid

当我尝试选择其他单元格时,用于Validation中的字段的

KendoGrid在当前正在编辑的单元格中正常工作。但是当我尝试对任何列进行排序或使用过滤器时,它doesn't work 。 如何以正常焦点事件对任何HTML元素的工作方式强制执行验证?

数据源中使用的代码

var mainDataSource={
            data :listJson   
            ,type:"json"
            ,batch:true
            ,schema: {
                model: { 
                    id: "Port_ID" 
                    ,fields:{
                            Port_ID:{type: "string",editable:false,nullable:false}
                            ,Slot1:{type:"number",editable:false}
                            ,Slot2:{type:"number",editable:false}
                            ,Type1:{type: "string",editable:true}
                            ,Type2:{type: "string",editable:false}
                            ,IsHFL:{type:"boolean",editable:false}
                           Project:{
                                type:"string"
                                ,editable:true
                                ,validation: {
                                    custom: function(input) {
                                        if(input.val()=="") {//to be added further
                                            input.attr("data-custom-msg", "Message");
                                            return false;
                                        }
                                        else
                                            return true;
                                    }
                                }
                            }

                           ,Used_For:{ type: "string",editable:true}
                          ,Start_Date:{type:"date",editable:true}

                           }
                }
            }
    };

1 个答案:

答案 0 :(得分:0)

来自telerik团队的反馈http://www.kendoui.com/forums/framework/validation/validation-call-not-triggered-on-grid-column-sort-filter.aspx

一般来说,不支持在存在验证错误时阻止绑定,但可以通过一些额外的代码来实现。基本上,当出现错误时,你应该使用dataSource requestStart event来阻止与事件参数preventDefault方法的绑定。

  requestStart: function(e){
    var grid = $("#grid").data("kendoGrid");
    if(grid.editable && !grid.editable.validatable.validate()){
        e.preventDefault();
    }
}