我正在使用带有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: 我的问题,重申,是 我想保留无效值,但仍然有验证显示红色它周围的盒子 。我确定它可能,但它是如何完成的?
我尝试了什么:
代码:
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 :(得分:1)
这对我有用(Extjs 4.2):
Ext.override(Ext.Editor, { revertInvalid: false });
答案 1 :(得分:0)
很可能Sencha尚未完全开发 revertInvalid 字段,并且其简单的功能尚不起作用。对于那些寻找解决方法的人来说,你可能不得不弄乱网格单元格的CSS来自定义标记为无效。
答案 2 :(得分:0)
对我而言,你可以通过覆盖Ext.editor的completeEdit函数来修复ExtJs中的错误