[英]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:我的问题,重申,是我想保留无效值,但仍然有验证显示它周围的红色框 。 我确信它可能,但它是如何完成的?
我尝试过的:
码:
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来自定义标记为无效。
对我来说,这是ExtJs中的一个错误,你可以通过覆盖Ext.editor的completeEdit函数来修复它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.