0

ValidationKendoGrid当我尝试选择其他单元格时,用于当前正在编辑的单元格中的字段可以正常工作。但是doesn't work当我尝试对任何列进行排序或使用过滤器时。我怎样才能像普通的 focusout 事件对任何 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}

                           }
                }
            }
    };
4

1 回答 1

0

从 Telerik 团队得到反馈 http: //www.kendoui.c​​om/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();
    }
}
于 2013-06-05T22:09:50.607 回答