, Slickgrid varsayılan doğrulama parametre olarak yalnızca bir değer boyunca geçen mevcut herhangi bir validator
denetleyen bir editor arasında validate
fonksiyonu ile sınırlıdır. Ek bağlamsal bilgi sağlamak için, özel bir düzenleyici veya daha özel olarak bir özel doğrulama işlevi gereklidir.
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 };
};
Her sütun varsayılan değer ile karşılaştırılır edileceği içinde doğrulayıcı gerekir ya editör gelen yeni bir değer veya herhangi bir diğer gerekli doğrulama yönleri ile birlikte mevcut değer.
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}
}
tüm kılavuz her satır üzerinde dolaşır bir doğrulayıcı için her sütun bakan bir doğrulama yöntemi temin doğrulamak için. doğrulama sonuçlarına dayanarak,
rowIndex -> collection of failures
bir ilişkisel haritalama yerli
onValidationError
olay geçirilecek inşa edilmiştir. Bu, bir abonelik için hataların varlığını bildiren kullanıcı bildirimine izin verir. Buna ek olarak, doğrulama sonuçları
providing specific metadata to the grid
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())
}
}
Eğer için "iş" bu bölümünü temsilci olabilecek diğer çerçeveler kullanıyor musunuz tarafından stil arızaları için kullanılabilir? Gözlemlediğiniz gibi, Slickgrid'in varsayılan validasyonu sadece bir parametre olarak sadece değeri geçen bir editörün 'validate' fonksiyonu ile sınırlıdır. İstenen davranışı elde etmek için kaynağı değiştirebilirsin, ama ben şahsen ben bu tür bir geçerliliği başka bir çerçeveye devredeyim (yani [Knockout Doğrulama] (https://github.com/Knockout-Contrib/Knockout-Validation)) ... Bununla birlikte, bu deneyime sahip olduğum için, bu kombinasyonun bir parçasıyım. – Origineil
Hayır, SlickGrid doğrulamada takılı kalmayı tercih ederim. – jlarson
Tam ızgara doğrulama (http://jsfiddle.net/origineil/nLpzjL32/) [bir demo ait] ettik. 'Validate' düğmesi, her veri girişi için "validator" tanımlı herhangi bir sütunu çalıştıracaktır. * Varsayılan doğrulama hatası davranışı * bir editör giriş alanının kapanmasına izin vermemekte, bu yüzden istediğiniz arıza işlemeyi gerçekleştirmeniz gereken yerleri göstermek için hücre yanıp sönmeyi ekledim. İkincisi, bir * varsayılan * değerinin ne olacağını bilmiyorum, bu yüzden sadece '' 0 'olması gerekliliğine sahip numaraları kullandım. – Origineil