validate
函数,该函数检查是否有任何可用的验证器
,并仅将值作为参数传递。为了提供更多上下文信息,需要使用自定义编辑器或更具体地说是自定义验证函数。
this.validate = function() {
if (args.column.validator) {
args.newValue = $input.val()
var validationResults = args.column.validator(args);
if (!validationResults.valid) {
return validationResults;
}
}
return { valid: true, msg: null };
};
每个列都需要一个验证器,其中默认值将与来自编辑器的新值或现有值以及任何其他必需的验证方面进行比较。
var Validator = function(args) {
//validate the existing value or the incoming editor value
var value = args.newValue ? args.newValue : args.item[args.column.field]
var result = value > 0
return {valid: result}
}
为了验证整个网格,请提供一种验证方法,该方法迭代每一行,在每列上查找验证器。根据验证结果,建立一个基于“行索引 -> 失败集合”的关系映射,以便传递到本地的onValidationError
事件中。这允许订阅处理用户通知存在错误的情况。此外,可以使用验证结果通过向网格提供特定的元数据来设置失败样式。
var validateColumns = function(args){
var failures=[];
for (c in columns) {
var column = columns[c]
if (column.validator) {
if(!column.validator({row: args.row, item: args.item, column: column}).valid){
failures.push({columnIndex: c, column: column, rowIndex: args.row, item: args.item})
}
}
}
return failures;
}
grid.validate = function() {
var rowFailures = {}
for (r in data) {
//ignore our metadata provider (if applicable)
if(r == 'getItemMetadata'){continue;}
var failures = validateColumns({item: data[r], row: r})
if(failures.length > 0){
rowFailures[r] = failures;
}
}
if(Object.keys(rowFailures).length > 0){
grid.onValidationError.notify({"rowFailures": rowFailures}, new Slick.EventData())
}
}
editor
的validate
函数,该函数仅传递值作为参数。你可以修改源代码以实现所需的行为,但我个人会将此类验证委托给另一个框架(例如 Knockout Validation)...尽管我对此组合有经验,因此有点偏爱它。 - Origineilvalidate
按钮将针对每个数据条目运行任何定义为validator
的列。默认验证错误行为 是不允许关闭编辑器输入字段,因此我添加了单元格闪烁以说明您需要实现所需的失败处理的位置。其次,我不知道 默认 值是什么,因此我只使用要求它们为> 0
的数字。 - Origineil