Ext.grid.面板编辑被忽略
Ext.grid.Panel edits are ignored
我有一个简单的网格面板,需要支持编辑。从视觉上看,它似乎还可以工作,但一旦我尝试获取数据存储中的所有用户,就好像所有编辑都被忽略了。
这是代码:
var myData =
[
];
var store = Ext.create('Ext.data.ArrayStore',
{
model: 'User',
data: myData
});
var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
});
// create the grid and specify what field you want
// to use for the editor at each header.
var grid = Ext.create('Ext.grid.Panel', {
store: store,
columns:
[
{
id: 'email',
header: 'User email',
dataIndex: 'email',
flex: 1,
field:
{
allowBlank: false
}
},
{
xtype: 'checkcolumn',
header: 'IsManager',
dataIndex: 'isManager',
width: 55
},
{
xtype: 'checkcolumn',
header: 'IsContractor',
dataIndex: 'isContractor',
width: 55
}
],
selModel: {
selType: 'cellmodel'
},
frame: false,
listeners :
{
delay: 1, // time for render
validateedit: function(editor, e)
{
//console.log(e.value);
//console.log(e.originalValue);
e.cancel = true;
e.record.data[e.field] = e.value;
}
},
tbar:
[
{
text: 'Add User',
handler : function()
{
// Create a record instance through the ModelManager
var r = Ext.ModelManager.create(
{
email: '',
isManager: true,
isContractor: false
},
'User');
store.insert(store.data.length, r);
cellEditing.startEditByPosition({row: store.data.length, column: 0});
}
},
{
text: 'Remove selected user',
handler : function()
{
var selection = grid.getView().getSelectionModel().getSelection();
if(selection)
store.remove(selection); // all selections
}
}
],
plugins: [cellEditing]
});
我正在使用Extjs 4.2
即使调用store.commitChanges()也没有什么区别。如果我不调用它并浏览存储,我可以看到记录上有脏标志,但修改后的值与初始值相同!奇怪的是,如果我在validatedit函数中放置断点,我可以看到那里的值。然而,一旦完成了所有编辑和添加,当我浏览store.data.items时,所有行看起来都是一样的(=在Add user中创建Ext.ModelManager.create输出的内容)。我试过在商店中将autoSave、autoSync和autoLoad设置为true,但没有任何区别。
编辑:
这是用户模型:
Ext.define('User',
{
extend: 'Ext.data.Model',
fields: [
{name: 'email', type: 'string'},
{name: 'isManager', type: 'bool'},
{name: 'isContractor', type: 'bool'},
]
});
我不认为e.record.data[e.field] = e.value;
正在更改存储中的值,根据文档,它只是一个util对象。如果你真的想修改你的商店,你应该使用这样的东西:
validateedit: function(editor, e)
{
store.getbyId("Your object Id property").set(e.field, e.value);
}
但是您的模型需要一个"Id"或"IdProperty"
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 高亮显示时编辑文本大小和颜色
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 将事件聚焦/模糊在可编辑内容的元素上
- 编辑HTML表的源数据
- ExtJS网格单元格编辑器,防止焦点松动问题
- 如何在visualstudio中调试web api时编辑javascript文件
- Kendo ui Grid:标准的HTML5输入日期时间可以用作单元格编辑器吗
- 调用REST Service save()方法时,XPages Dojo Grid可编辑单元格不保存值
- 只允许某些行在 ng-grid 中可编辑
- Ext.grid.EditorGridPanel中的复选框(单击一次可触发编辑后事件)
- KendoUI Grid:自定义编辑表单,日期选择器返回false格式
- 如何更改ui-grid的单元格的背景颜色为某些颜色,如果它的编辑和新值不等于旧值(脏)
- 在ui-grid编辑事件上与gridData交互
- 建议,帮助需要ExtJS 4: grid: cell编辑:自动编辑功能
- 如何使整个Angular ng-grid可编辑
- AngularJS ui网格可编辑CellTemplate:'ui grid/dropdownEditor
- Ext.grid.面板编辑被忽略
- openjs grid v2.1 -可编辑列不工作