slickgrid验证将要添加的行

时间:2012-02-08 11:06:20

标签: javascript validation slickgrid

在示例中,当您在最后一行的一个单元格中键入内容时,会添加一个新行。只有在此新行中的所有单元格对列的validator规则有效后,才能添加新行?

2 个答案:

答案 0 :(得分:5)

这是一个工作片段。它不会阻止添加行,但会在新行上运行所有验证并强制用户输入所有缺失值。

首先定义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);
    });

答案 1 :(得分:0)

SlickGrid不支持。