我正在使用带有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;博士:我的问题,重申,是我想保持无效值,但仍然有验证显示周围一个红色的盒子。我相信它是可能的,但它是如何完成的?
我已经试过:
- 我看着Ext.Editor,似乎有前途的,因为它有一个名为一个配置属性revertInvalid,做正是我想要的。不幸的是,似乎CellEditing插件似乎没有使用Ext.Editor。我试过在网格列的编辑器字段中提供Ext.Editor,但生成了不可编辑的文本。
- 我试过把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});
}
}]
}
的completeEdit功能修复bug当您完成编辑单元格,这样可以节省该商店的价值。网格是商店的代表。你可以玩弄细胞本身的css(比如在onsave上标记为红色),但是你不能使用传统的“验证器”函数。 (我知道至少) – Alex 2012-08-06 20:25:14
感谢您的回复。我担心我必须经历烦人的解决方法。只是看到** revertInvalid **正好是我想要的,我希望GridPanel和CellEditing有类似之处。 – applepie 2012-08-06 21:08:38