我有一个网格,其中有cellediting插件,我通过直接事件发布数据。
我在网格下方有一个保存按钮,用于发送直接事件。
一切正常,除非以下情况:
如果我在编辑行时按下保存按钮,则getChangedData不会将该行视为脏。
如果我在之间(在之前的事件中)发出警报,它会按预期工作,但这不是一个选项。我尝试了所有可能的黑客攻击,例如发送活动元素的onblur事件,显示waitmsg,以编程方式将焦点设置在其他地方,但没有任何帮助。
寻求帮助。
干杯,
阿维纳什
答案 0 :(得分:0)
尝试在保存按钮处理程序上添加此脚本。
//get the current selected row of your grid
var selectedRecord = gridpanel.getSelectionModel().getSelection()[0];
var selectedRow = gridpanel.store.indexOf(selectedRecord);
//get the index of selected row
var idx = selectedRow <= -1 ? (gridpanel.store.getCount() - 1) : selectedRow;
gridpanel.plugins[0].startEditByPosition({
row: idx,
column: columnNumberWithEditor});
//proceeed to saving data
startEditByPosition将触发edit事件。
还要确保在cellEditing插件上处理edit
事件。
listeners : {
'edit' : function(editor, e) {
e.record.commit();
}
}
答案 1 :(得分:0)
当我尝试在IE7中编辑网格时出现同样的问题(Chrome不是问题)。
我认为问题是我的保存按钮事件处理程序被调用之前,onBlur事件可以告诉编辑单元完成其编辑并将其值存储在商店中。
我为解决这个问题所做的是:
(1)单独定义我的面板网格编辑器。
var myPanelGridEditor = Ext.create('Ext.grid.plugin.CellEditing', {
ptype: 'cellediting',
clicksToEdit: 1
});
(2)定义我的面板网格,其中包含插件中的面板网格编辑器。
var myGrid = Ext.create('Ext.grid.Panel', {
id: 'myPanelGrid', store: myStore, viewConfig: {markDirty: false},
columnLines: true,
columns: [
{header: 'HE01', dataIndex: 'vp01', sortable: false, maxWidth: 40, field: {xtype: 'numberfield', minValue: 0, hideTrigger: true, decimalPrecision: 4 }},
{header: 'HE02', dataIndex: 'vp02', sortable: false, maxWidth: 40, field: {xtype: 'numberfield', minValue: 0, hideTrigger: true, decimalPrecision: 4 }}
],
selModel: Ext.create('Ext.selection.RowModel', {mode: 'SINGLE'}),
plugins: [myPanelGridEditor],
height: 73, width: 1010, margin: '0 0 12 30'
});
(3)在我的保存按钮事件处理程序
中添加对completeEdit()的调用{
text: 'Save',
formBind: true,
id: 'saveButton',
handler: function () {
myPanelGridEditor.completeEdit();
...
}
}
理论上你应该可以打电话
myGridPanel.editingPlugin.completeEdit();
在你的保存处理程序中,但在Ext JS 3.3.1中,属性为null。