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}
}
}
}
};
答案 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();
}
}