extjs getChangedData()不';不包括上次编辑的记录

extjs getChangedData()不';不包括上次编辑的记录,extjs,gridpanel,Extjs,Gridpanel,我有一个网格,其中有cellediting插件,我通过直接事件发布数据 我在网格下方有一个保存按钮,用于发送直接事件 除非出现以下情况,否则所有工作正常: < >强>如果在编辑行时按下“保存”按钮,则GETCueDeDATA不认为行脏。< /强> 如果我在两者之间(在before事件中)放置一个警报,它将按预期工作,但这不是一个选项。我尝试了所有可能的破解,比如发送活动元素的onblur事件,显示waitmsg,以编程方式在其他地方设置焦点,但没有任何帮助 正在寻求帮助 干杯 Avinash尝

我有一个网格,其中有cellediting插件,我通过直接事件发布数据

我在网格下方有一个保存按钮,用于发送直接事件

除非出现以下情况,否则所有工作正常:

< >强>如果在编辑行时按下“保存”按钮,则GETCueDeDATA不认为行脏。< /强>

如果我在两者之间(在before事件中)放置一个警报,它将按预期工作,但这不是一个选项。我尝试了所有可能的破解,比如发送活动元素的onblur事件,显示waitmsg,以编程方式在其他地方设置焦点,但没有任何帮助

正在寻求帮助

干杯


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();