ExtJs 3.4:从网格中获取所有记录并将它们传递到 servlet

Posted

技术标签:

【中文标题】ExtJs 3.4:从网格中获取所有记录并将它们传递到 servlet【英文标题】:ExtJs 3.4 : Get all records from a grid and pass them into a servlet 【发布时间】:2014-02-04 06:46:56 【问题描述】:

我有一个网格存储,我想从该网格中获取所有记录并将它们推送到一个数组中。而且我还想将这个数据数组传递给一个 servlet 以将它们保存在数据库中。这是我的尝试。

var tourData = plannedGridStore.getRange();
var gridData = new Array();
tourData.each(function (record) 
    gridData.push(record.data);
);

但我的萤火虫控制台说

.each(function (record)  is not a function

我正在使用 ExtJs 3.4。我的代码有什么问题?

而且我还需要知道如何将我的 gridData 数组传递给 servlet。

请帮帮我

干杯

【问题讨论】:

您在函数的最后一行缺少结束 ,这是一个错字吗? 不不。我发这个问题的时候搞错了 【参考方案1】:

Ext.data.Store getRange 方法返回记录数组。对于迭代这个数组,你可以使用Ext.each() 方法:

Ext.each(tourData, function (record) 
    gridData.push(record.data);
);

要将数组数据发送到服务器,您可以使用Ext.Ajax.request 方法。您不能将数组作为请求参数传递,因此首先您必须使用 Ext.util.JSON.encode() 方法将其编码为 JSON。

Ext.Ajax.request(
    url: 'YOUR_URL',
    params:  
       gridData: Ext.util.JSON.encode(gridData)
    
);

【讨论】:

这很好用。非常感谢。你能告诉我,我应该在我的 servlet 中接收这个 gridData 数组吗?【参考方案2】:

如果你使用的是 POST,你可以做一些非常简洁的事情,比如:

Ext.Ajax.request(
    url: 'url',
    jsonData: Ext.pluck(store.getRange(), 'data')
);

【讨论】:

很高兴了解Ext.pluck,它在这种情况下非常有效,谢谢!

以上是关于ExtJs 3.4:从网格中获取所有记录并将它们传递到 servlet的主要内容,如果未能解决你的问题,请参考以下文章

extjs 3.4 ComboBox 发送错误的数据类型

extjs 从第一个网格中选择记录并将所选记录复制到第二个网格

ExtJS 间隔计时器获取数据并在网格中插入新行

ExtJs双击行并将记录传递到输入字段中的另一个窗口

如何从 EXTJS 中的委托事件中获取记录?

ExtJS 3.4 滑块控件