2012-08-06 56 views
4

我正在使用带有CellEditing插件的ExtJs网格。它的工作原理非常完美,除非无效值在我对其施加的验证失败时丢失。例如,如果网格中有一个不允许超过10个字符的值的可编辑文本字段,并且用户输入“olympicssucks”,则验证将失败,文本字段周围会出现一个红色框。当用户点击该字段时,值“olympicssucks”将丢失。带有CellEditing的ExtJs 4 GridPanel:输入的数据在验证失败时丢失

我想要网格仍然保存无效的数据,并保持它的红色框。

另一种(也许更清晰),例如: http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/cell-editing.html 尝试编辑第一cellvalue: “Adder's舌”,并使其为空。注意红色框和确认信息。现在点击即可。验证失败将单元恢复其原始值,加法器的语言


TL;博士:我的问题,重申,是我想保持无效值,但仍然有验证显示周围一个红色的盒子。我相信它是可能的,但它是如何完成的?

我已经试过:

  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});       
       } 
      }] 
    } 
+0

的completeEdit功能修复bug当您完成编辑单元格,这样可以节省该商店的价值。网格是商店的代表。你可以玩弄细胞本身的css(比如在onsave上标记为红色),但是你不能使用传统的“验证器”函数。 (我知道至少) – Alex 2012-08-06 20:25:14

+0

感谢您的回复。我担心我必须经历烦人的解决方法。只是看到** revertInvalid **正好是我想要的,我希望GridPanel和CellEditing有类似之处。 – applepie 2012-08-06 21:08:38

回答

0

它很可能是,煎茶尚未完全开发的revertInvalid领域,其简单的功能尚不能工作。对于那些正在寻找解决方法的人来说,您可能不得不混淆网格单元格的CSS自定义标记为无效。

+0

我不这么认为,文档指出:“Available since:1.1.0”。 – MatteoSp 2013-05-14 14:16:20

1

这对我有效(Extjs 4。2):

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

你可以发布一个简短的片段jsfiddle吗?我想验证这一点,并且我无法访问我正在处理的旧代码库。 – applepie 2013-07-19 18:42:10

+0

对不起,代码来自一个非常复杂和高度动态的UI生成解决方案,为ERP提供动力。真的很难提取一个片段 – MatteoSp 2013-07-19 22:35:30