2012-01-12 2 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

+0

Yepp, это сработало спасибо! ;-) Я отправлю свой ответ примерно через 7 часов (потому что это невозможно для меня сделать сейчас из-за точек репутации stackoverflows) –

ответ

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(), чтобы заставить вашу сетку повторно отобразить.

Смежные вопросы