extjs getChangedData()不';不包括上次编辑的记录
我有一个网格,其中有cellediting插件,我通过直接事件发布数据 我在网格下方有一个保存按钮,用于发送直接事件 除非出现以下情况,否则所有工作正常: < >强>如果在编辑行时按下“保存”按钮,则GETCueDeDATA不认为行脏。< /强> 如果我在两者之间(在before事件中)放置一个警报,它将按预期工作,但这不是一个选项。我尝试了所有可能的破解,比如发送活动元素的onblur事件,显示waitmsg,以编程方式在其他地方设置焦点,但没有任何帮助 正在寻求帮助 干杯extjs getChangedData()不';不包括上次编辑的记录,extjs,gridpanel,Extjs,Gridpanel,我有一个网格,其中有cellediting插件,我通过直接事件发布数据 我在网格下方有一个保存按钮,用于发送直接事件 除非出现以下情况,否则所有工作正常: < >强>如果在编辑行时按下“保存”按钮,则GETCueDeDATA不认为行脏。< /强> 如果我在两者之间(在before事件中)放置一个警报,它将按预期工作,但这不是一个选项。我尝试了所有可能的破解,比如发送活动元素的onblur事件,显示waitmsg,以编程方式在其他地方设置焦点,但没有任何帮助 正在寻求帮助 干杯 Avinash尝
Avinash尝试在保存按钮处理程序中添加此脚本
//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
当我试图在IE7中编辑我的网格时,我也遇到了同样的问题(Chrome没有问题) 我认为问题在于,在onBlur事件通知编辑单元完成编辑并将其值放入存储之前,我的save button事件处理程序被调用 我所做的工作是: (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。感谢您的帮助,我尝试了它,但没有成功,我想进一步解释。场景是,我在一个列编辑器中,我没有在编辑器外单击以将记录标记为dirty,而是直接单击save按钮。现在,当我在服务器端检查时,我没有得到在跳转到保存按钮之前正在编辑的记录。嗯。。您是否尝试过收听cellEditing
edit
事件?请看我的最新答案。不幸的是,这不起作用。看起来这是故意的。你有没有找到解决办法;我们面临着一个几乎相似的问题。
myGridPanel.editingPlugin.completeEdit();