【问题标题】:slickgrid validate row that is going to be addedslickgrid 验证要添加的行
【发布时间】:2012-02-08 11:06:19
【问题描述】:

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

【问题讨论】:

    标签: javascript validation slickgrid


    【解决方案1】:

    这是一个有效的 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);
        });
    

    【讨论】:

      【解决方案2】:

      SlickGrid 不支持。

      【讨论】:

      • 好的。以及如何使用红色背景制作无效单元格(添加新行后)?也许一些解决方法可以帮助我?
      • 在您的 onAddNewRow 处理程序中,您可以验证所有单元格并为有问题的单元格提供“无效”CSS 类(请参阅github.com/mleibman/SlickGrid/wiki/Providing-data-to-the-grid)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 2014-11-18
      • 1970-01-01
      • 2011-11-25
      相关资源
      最近更新 更多