在 ExtJS 中将数据附加到 GridPanel

Posted

技术标签:

【中文标题】在 ExtJS 中将数据附加到 GridPanel【英文标题】:Appending data to GridPanel in ExtJS 【发布时间】:2009-11-26 22:31:02 【问题描述】:

我遇到了一个看似简单的问题:将数据附加到我的 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

这一切都很好。现在我想定期将新数据附加到这个网格面板(有一个函数正在生成数据数组)。 但是我不能让它工作。尝试了datastore.add,但无济于事。

有什么想法吗?

【问题讨论】:

【参考方案1】:

你向 datastore.add 传递了什么?

试试这个:

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

【讨论】:

我的设置与 Ash 相同,但不知何故 datastore.recordType 未定义。这是为什么呢?【参考方案2】:

你应该改成这样:

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

【讨论】:

什么是recordType,它是如何定义的?【参考方案3】:

您作为参数传递给 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]
        )
    );

【讨论】:

什么是recordType,它是如何定义的?

以上是关于在 ExtJS 中将数据附加到 GridPanel的主要内容,如果未能解决你的问题,请参考以下文章

ExtJS GridPanel 数据工具提示

前台extjs,后台java,导出 gridpanel的数据到execl中,如何做,求前台和后台action代码 ,

ExtJS 3.4.0 GridPanel 有条件地禁用行

无废话ExtJs 入门教程十七[列表:GridPanel]

如何在不触发 selectionchanged 事件的情况下将项目添加到 ExtJS GridPanel

Javascript - ExtJs - GridPanel组件 - 编辑