grid采用 ftype: 'summary' 来统计平均分,目前有个需求是导出grid数据到excel,且要将平均分也导出。
通过console.log,找到summary后的数据,分析typeOf为Object对象,因此通过Ext.encode将Object转成可传递的对象。
var grid = btn.up('window').down('grid');
var obj=grid.view.features[0].summaryData;
var summaryData=Ext.encode(obj);
传递后后台,需要的实际数据是obj中的实际值,所以就考虑将string通过split分割存储到hashmap中,这里采用LinkedHashMap的作用是保证按照顺序存储我传递过来的参数。最后通过Collection 获取map的value集合,然后放入list,关键代码如下。
String summaryDataStr=request.getParameter("summaryData"); //存储最后的平均分
summaryDataStr=summaryDataStr.substring(1, summaryDataStr.length()-1);
String[] summaryData=summaryDataStr.split(",");
LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
for (String str : summaryData) {
String[] keyText = str.split(":"); // 转换key与value的数组
if (keyText.length < 1) {
continue;
}
String key = keyText[0]; // key
String value = keyText[1]; // value
if(!"null".equals(value) && value!=""){
double d = Double.parseDouble(keyText[1]);
value=df.format(d);
}
map.put(key, value);
}
Collection c = map.values();
List list = new ArrayList(c);