是否有一种简单的方法可以将网格数据导出到ExtJS中的XLS。
如果不是,我正在尝试以下方式。
我正在尝试读取控制器内的数据存储。数据存储已被网格使用。我想在按钮上单击读取数据并通过AJAX将其发送到服务器。稍后在服务器内部,我将检索数据并写入XLS。在这种情况下,我可以读取控制器内的数据的方式是什么?
在这里输入代码
Ext.define("MyApp.controller.GridController", {
extend : 'Ext.app.Controller',
views: ['performance.grid.PerformanceGrid'],
models: ['GridModel'],
stores: ['GridStore'],
refs : [{
ref : 'mainTabPanel',
selector : 'portal > tabpanel'
}],
init : function() {
this.control({
'portal toolbar > button[itemId=xls]' : {
click : this.onAddTab
},
'portal toolbar > button[itemId=pdf]' : {
click : this.onAddPortlet
}
});
},
onAddTab : function(btn, e) {
// I want to read the datastore here and make an AJAX call
},
});
答案 0 :(得分:0)
onAddTab: function(btn, e){
var store = // get the store reference probably doing Ext.getStore('the store');
var records = store.data.items.map(function(r){ return r.data });
// send it all to your server as you want to
// Ext.ajax.Request({
// url: 'the url',
// data: records,
// method: 'POST'
// });
});
我没有测试它但它必须工作。 祝你好运!
答案 1 :(得分:0)
我认为这个过程不是最好的,因为你将有3个有效载荷(数据往返没有任何意义)
您的服务器方法调用将获取将填充到网格中的数据。
JSON对象(包含服务器数据)将再次传送到服务器
(这对我没有感觉......为什么在服务器有源时你想将数据发送给服务器?)
我认为你应该做的是以下几点:
store proxy URL
并解析方法和extraParams
,以便了解谁为网格服务以及您向服务器询问了什么。common method
和method
的服务器上创建array of parameters
。然后在这个方法中根据方法制作逻辑,你可以调用你的数据存储库(第一个请求得到数据的存储库),处理文档并将文件发送回服务器。这样你应该有这样的东西:
webmethod(string method, object[] params) {
switch(method){
case "GetTestGridData":
// here you call your Repository in order to get the same data
GeneralRepo repo = new GeneralRepo();
var data = repo.GetTestGridData(object[0],object[1]);
break;
}
byte[] fileStream = Reports.Common.Generate(data, ExportType.PDF);
// response the stream to client...
}