2013-11-21 17 views
0

我有一個網格cellediting插件就位,我通過直接事件發佈數據。extjs getChangedData()不包括最後編輯的記錄

我在發送直接事件的網格正下方有一個保存按鈕。

一切運作良好禁止以下情形:

如果我按保存按鈕,同時編輯一個排,getChangedData不考慮該行髒。

如果我在兩者之間放置一個警報(在事件前),它按預期工作,但那不是一個選項。我嘗試了所有可能的竅門,例如發送活動元素的onblur事件,顯示waitmsg,以編程方式將焦點設置在其他地方,但沒有任何幫助。

尋求幫助。

乾杯,

阿維納什

回答

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(); 
    } 
} 
+0

感謝您的幫助,我試了一下,但沒有成功,我想進一步解釋。場景是,我處於列編輯器中,而不是在編輯器外部單擊以將記錄標記爲髒,我直接單擊保存按鈕。現在當我在服務器端檢查時,我沒有得到正在編輯的記錄,然後跳到保存按鈕。 – asolvent

+0

嗯..你有沒有試過聽cellEditing'edit'事件?請看我最新的答案。 – wens

+0

不幸的是,這並沒有工作。它看起來像是通過設計。 – asolvent

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)在我的保存按鈕事件處理程序

{ 
    text: 'Save', 
    formBind: true, 
    id: 'saveButton', 
    handler: function() { 
    myPanelGridEditor.completeEdit();   
    ... 
    } 
} 

理論上添加到completeEdit()的調用,你應該能夠調用

myGridPanel.editingPlugin.completeEdit(); 

在你的存儲處理器,但在Ext JS 3.3.1中,該屬性爲null。