如何懒惰插入ExtJS 3商店?

时间:2012-01-12 13:42:46

标签: javascript extjs store

我尝试在商店中插入新记录,以避免Ext.data.Store.load();从定义的代理中再次加载所有数据。

是否可以在不定义列和数据类型的情况下插入新的Ext.data.Record

我想要这样的事情:

var myStore = this.grid.getStore();

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

非常感谢提前!

2 个答案:

答案 0 :(得分:0)

手动更新商店的记录后,您还可以尝试触发store.reconfigure()方法以强制网格重新呈现。

答案 1 :(得分:0)

谢谢Lolo,

这解决了我的问题; - )

以下是我解决问题的代码:

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