slickgrid проверяет строку, которая будет добавлена - PullRequest
1 голос
/ 08 февраля 2012

Как и в примерах, новая строка добавляется, когда вы вводите что-то в одну из ячеек последней строки. Как можно добавить новую строку только после того, как все ячейки в этой новой строке соответствуют правилам validator столбцов?

Ответы [ 2 ]

5 голосов
/ 01 февраля 2013

Вот рабочий фрагмент. Он не останавливает добавление строки, но запускает все проверки для новой строки и вынуждает пользователя вводить все пропущенные значения.

Сначала определите функцию 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);
    });
0 голосов
/ 10 февраля 2012

SlickGrid не поддерживает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...