将数据附加到ExtJS中的GridPanel

时间:2009-11-26 22:31:02

标签: extjs

我遇到了一个看似简单的问题:将数据附加到我的ExtJS Gridpanel。我有一个网格面板,其中包含一些初始数据。

var myData = [['data1','data2']];

var myReader = new Ext.data.ArrayReader({}, [
            {name: 'Col1'},
            {name: 'Col2'},
            );

var datastore = new Ext.data.Store({
            data: myData,
            reader: myReader
            });
grid = new Ext.grid.GridPanel({
            store: datastore,
   ...
   etc

这一切都运行正常。现在我想定期将新数据附加到此gridpanel(有一个生成数据数组的函数)。 但是,我不能让这个工作。尝试过datastore.add,但无济于事。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

你传递给datastore.add的是什么?

试试这个:

datastore.add(new datastore.recordType({
    Col1: 'data3',
    Col2: 'data4'
}));

答案 1 :(得分:1)

你应该改为:

 datastore.add(new datastore.recordType(['data3', 'data4']));

答案 2 :(得分:0)

作为add方法的参数,您传递的数据必定存在问题。 Firebug中是否出现任何错误?如果是这样,它是什么?

add方法将Ext.data.Record对象数组作为其参数。因此,如果您要将数据数组添加到网格中,则需要先将每个数组转换为记录格式,然后才能将其传递给存储。例如:

var new_data = [['data3','data4'], ['data5','data6']];

for (var i = 0, len = new_data.length; i < len; i++) {
    datastore.add(new datastore.recordType({
           Col1: new_data[0],
           Col2: new_data[1]
        })
    );
}