【发布时间】:2012-02-08 11:06:19
【问题描述】:
在示例中,当您在最后一行的一个单元格中键入内容时,会添加一个新行。只有在新行中的所有单元格都对validator列规则有效之后,如何才能添加新行?
【问题讨论】:
标签: javascript validation slickgrid
在示例中,当您在最后一行的一个单元格中键入内容时,会添加一个新行。只有在新行中的所有单元格都对validator列规则有效之后,如何才能添加新行?
【问题讨论】:
标签: javascript validation slickgrid
这是一个有效的 sn-p。它不会阻止添加行,但会在新行上运行所有验证并强制用户输入所有缺失值。
首先定义 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,则在将项目添加到 Array 之后):
grid.onAddNewRow.subscribe(function (e, args) {
dataView.addItem($.extend({
id: dataView.getLength()
}, args.item));
validateRow(args.grid, args.grid.getActiveCell().row);
});
【讨论】:
SlickGrid 不支持。
【讨论】: