2012-01-12 54 views
0

我嘗試在商店中插入新記錄以避免Ext.data.Store.load();這會再次從定義的代理加載所有數據。如何懶惰地插入ExtJS 3商店?

是否可以在不定義列和數據類型的情況下插入新的Ext.data.Record

我想是這樣的:

var myStore = this.grid.getStore(); 

myStore.insert({ 
    firstColumn: 'myValueForTheFirstColumn', 
    secondColumn: 'myValueForTheSecondColumn' 
}); 

提前非常感謝!

+0

你試過[添加](HTTP://文檔。 sencha.com/ext-js/4-0/#!/api/Ext.data.Store-method-add)方法? – Krzysztof 2012-01-12 14:00:34

+0

葉普,那工作謝謝你! ;-)我會在大約7個小時後發佈我的答案(因爲我現在不可能這樣做,因爲stackoverflows聲望點) – 2012-01-12 14:41:21

回答

0

感謝洛洛,

這個固定我的問題;-)

下面的代碼我是如何解決這個問題:

var cm = this.grid.getColumnModel(); // getting the column model 
var cc = cm.getColumnCount(); // getting number of counts (before add) 
var lastStoreRecordIndex = this.grid.getStore().getCount() - 1; // getting the 
                   // last record 
                   // (before add) 
// the approximated ID which could be in the database 
// (this is too optimistic in critical applications) 
var approxId = this.grid.getStore().getAt(lastStoreRecordIndex).get('id') + 1; 

// building a new record based on the columns of the current column model 
var ch = '', data = new Object(); 
for (var i = 0; i < cc; ++i) { 
    ch = cm.getColumnHeader(i); 

    data[ch] = ''; 
} 

this.grid.getStore().add([new Ext.data.Record(data)]); // add and be happy! ;-) 
0

手動更新商店記錄後,您還可以嘗試啓動store.reconfigure()方法以強制網格重新渲染。