0

Validationフィールドに使用されているものは、KendoGrid他のセルを選択しようとすると、現在編集中のセルで正常に機能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 に答える