繁体   English   中英

具有CellEditing的ExtJs 4 GridPanel:输入的数据在验证失败时丢失

[英]ExtJs 4 GridPanel with CellEditing: data entered is lost on failed validation

我正在使用带有CellEditing插件的ExtJs Grid。 它完美地工作,除了当我对其施加的验证失败时失去无效值。

例如,如果我在网格中有一个不允许超过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 我已经尝试将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 });

很可能Sencha尚未完全开发revertInvalid字段,并且其简单的功能尚不起作用。 对于那些寻找解决方法的人来说,你可能不得不弄乱网格单元本身的CSS来自定义标记为无效。

请参阅http://www.sencha.com/forum/showthread.php?271318-Ext.Editor-revertInvalid-false-what-is-the-expected-behavior&p=994118#post994118

对我来说,这是ExtJs中的一个错误,你可以通过覆盖Ext.editor的completeEdit函数来修复它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM