我有一個簡單的情況,我得到了一個附加商店的網格。網格在存儲記錄編輯和提交後丟失(可見)選擇
有2個按鈕。一個具有修改所選記錄的處理程序。一個提供所選記錄的處理程序。
當我選擇一條記錄並按下編輯 - >編輯發生選擇(看起來丟失),如果您撥打grid.geSelectionModel().getSelection()
您會看到該記錄仍處於選中狀態。它只是不顯示這種方式。
您不能再次選擇它,您首先必須選擇另一條記錄,然後選擇記錄。
其次,當您選擇一條記錄點擊提交按鈕時,該值被提交,但選擇再次顯示爲丟失。
這是一個錯誤?我怎樣才能解決這個問題?我希望它保持選擇可見!
這裏是示例代碼:(我用分機4.1.1)
var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
});
Ext.create('Ext.data.Store', {
storeId: 'simpsonsStore',
fields: ['name', 'email', 'phone'],
data: {
'items': [{
'name': 'Lisa',
"email": "[email protected]",
"phone": "555-111-1224"
}, {
'name': 'Bart',
"email": "[email protected]",
"phone": "555-222-1234"
}, {
'name': 'Homer',
"email": "[email protected]",
"phone": "555-222-1244"
}, {
'name': 'Marge',
"email": "[email protected]",
"phone": "555-222-1254"
}]
},
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'items'
}
}
});
Ext.create('Ext.container.Container', {
layout: 'fit',
renderTo: Ext.getBody(),
items: [{
xtype: 'grid',
store: Ext.data.StoreManager.lookup('simpsonsStore'),
columns: [{
text: 'Name',
dataIndex: 'name'
}, {
text: 'Email',
dataIndex: 'email',
flex: 1
}, {
text: 'Phone',
dataIndex: 'phone'
}],
height: 200,
buttons: [{
text: 'commit selection',
handler: function(){
this.up('grid').getSelectionModel().getSelection()[0].commit();
}
},{
text: 'set selection name to maggy',
handler: function(){
this.up('grid').getSelectionModel().getSelection()[0].set('name', 'Maggy');
}
}]
}]
});
UPDATE:
我報告說,它在sencha forum。 Mitchel Simoens告訴我,它已在Ext 4.1.2中修復。太糟糕了,這是一個「支持用戶只有」版本..
UPDATE:
我定位的問題,試圖修復它。我相信這個問題位於Ext.view.Table類的onUpdate方法,圍繞這段代碼更精確:
它是一個壞主意,只留下這段代碼呢?我評論說,它現在似乎正在工作,但它不會破壞一些其他功能? http://jsfiddle.net/Vandeplas/YZqch/10/
這是最明顯的解決方案。但是這引發了選擇事件。我發佈了一個非常簡單的例子。但在我的真實應用程序中,我傾聽選擇事件來加載其他面板。在小組中,我進行了修改,選擇了潛水選項並保存,再次選擇了潛水選擇。 – VDP
我[改進](http://jsfiddle.net/Vandeplas/YZqch/7/)它通過暫停事件有點。這種溶劑會在分頁商店中使用嗎? 「rec.index」會一直正確嗎? – VDP
我會最後告訴你關於分頁的問題,因爲我甚至無法獲得無限的滾動條爲我們工作。我相信'rec.index'將是正確的,只要您在處理程序中的相同功能期間不刷新網格即可。但是如果你這樣做,你甚至想要選擇同一條線嗎?底線,我恨我們的方法,因爲他們是醜陋的黑客,到一個不起作用的簡單功能。 BL2:你的代碼非常好。 – bldoron