javascript - 带有 CellEditing 的 ExtJs 4 GridPanel : data entered is lost on failed validation

标签 javascript validation extjs4 editing gridpanel

我正在使用带有 CellEditing 插件的 ExtJs 网格。它工作得很好,除了当我强加给它的验证失败时,无效值会丢失。

例如,如果我在网格中有一个不允许超过 10 个字符的值的可编辑文本字段,并且用户输入“olympicssucks”,验证将失败并且周围会出现一个红色框文本域。当用户点击字段外时,值“olympicssucks”将丢失。

我希望网格仍然保存无效数据,并保留其周围的红色框。

另一个(可能更清楚)的例子: http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/cell-editing.html 尝试编辑第一个单元格值:“Adder's-Tongue”并将其设为空。注意红色框和验证消息。现在点击开箱即用。失败的验证将将单元格恢复为其原始值Adder's-Tongue


tl;dr: 我的问题是,重申一下,我想保留无效值,但仍然有显示红色的验证框在它周围。我确信这是可能的,但它是如何完成的?

我尝试过的:

  1. 我研究了 Ext.Editor,它看起来很有前途,因为它有一个名为 revertInvalid 的配置属性,完全我想要的.不幸的是,CellEditing 插件似乎没有使用Ext.Editor。我试过在网格列的 Editor 字段中提供 Ext.Editor,但生成了不可编辑的文本。
  2. 我已经尝试将 revertInvalid 放在所有可能的地方,但这总是遥不可及。

代码:

    var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
        clicksToEdit: 1
    });

    var grid = {
            xtype: 'grid', store: dataStore, plugins: [cellEditing],
            columns: [
                {
                    text: 'Items', dataIndex: 'items', flex: 1, sortable : false,
                    editor: {
                        xtype: 'textfield',
                        validator: function(value) { //custom validator to return false when value is empty and other conditions}
                },
                //...
           ],
           tbar: [{
                xtype: 'button', text: 'Add ' + type,  
                handler: function() {
                    dataStore.insert(0, {items: 'New ' + type});
                    cellEditing.startEditByPosition({row: 0, column: 0});                           
                }
           }]
    }

最佳答案

这对我有用(Extjs 4.2):

Ext.override(Ext.Editor, { revertInvalid: false });

关于javascript - 带有 CellEditing 的 ExtJs 4 GridPanel : data entered is lost on failed validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11833909/

相关文章:

extjs - 从 ExtJs 的组合框中获取完整的模型对象?

javascript - 是否可以模拟 'window.confirm()'这样的阻塞对话框?

javascript - 如何在 JavaScript 中将价格转换为有效的价格格式?

javascript - null 或空 vs 无参数 - 使用可选参数调用 API

php - 如何在 Laravel5 请求类中验证 Money

html - 验证器中的流浪开始标记 HTML?

javascript - 如何在没有提交事件的情况下显示 setCustomValidity 消息/工具提示

extjs - ExtJS4.1 TreeGrid中的二级排序

ExtJS 使用 Roweditor 和组合无法正常工作

javascript - 如何计算用户在页面上活跃的时间?