Вот рабочий фрагмент. Он не останавливает добавление строки, но запускает все проверки для новой строки и вынуждает пользователя вводить все пропущенные значения.
Сначала определите функцию validateRow (в идеале ее следует поместить в пространство имен SlickGrid):
function validateRow(grid, rowIdx) {
$.each(grid.getColumns(), function(colIdx, column) {
// iterate through editable cells
var item = grid.getDataItem(rowIdx);
if (column.editor && column.validator) {
var validationResults = column.validator(item[column.field]);
if (!validationResults.valid) {
// show editor
grid.gotoCell(rowIdx, colIdx, true);
// validate (it will fail)
grid.getEditorLock().commitCurrentEdit();
// stop iteration
return false;
}
}
});
}
Затем вызовите его в onAddNewRow связывающей функции (или после добавления элемента в массив, если вы не используете DataView):
grid.onAddNewRow.subscribe(function (e, args) {
dataView.addItem($.extend({
id: dataView.getLength()
}, args.item));
validateRow(args.grid, args.grid.getActiveCell().row);
});