在使用JqxWidges时,我遇到了导出嵌套网格的问题,这些嵌套网格使用一个JSON作为源文件。常见的解决方案不起作用。实际上它只导出父网格列。
$("#excelExport").click(function () {
$("#jqxGrid").jqxGrid('exportdata', 'csv', chartName + ' ' + date);
});
其中一个现有解决方案(http://www.jqwidgets.com/community/reply/reply-to-export-data-from-a-nested-grid-13/)建议在调用initrowdetails函数时将嵌套行推入数据数组。
是的,它有效!但仅适用于嵌套网格以及选择此网格的情况。
答案 0 :(得分:2)
所以,从这一步开始,我将转向下一个方法:
使用初始JSON将所有必要的数据收集到数组中(防止您只收集单独的选定数据);
使用所有现有数据初始化父网格列,并将嵌套列标记为隐藏。然后在导出时不要忘记添加true参数来导出非/隐藏列;
将标准导出与自定义数组参数一起使用;
就是这样!
数据收集:
var toExport = data.allClientsCountChart;
var exp = new Array();
for(var i in toExport){
var client = {};
var countr = toExport[i].countries;
client[labels.clientType]=toExport[i].clientType;
client[labels.clientTypeCount]=toExport[i].clientTypeCount;
exp.push(client);
for(var j in countr) {
var country = {}
var detailes = countr[j].clientDetails;
country[labels.countryType]=countr[j].countryType;
country[labels.clientsNumber]=countr[j].clientsNumber;
exp.push(country);
for(var d in detailes) {
var det = {}
det[labels.scriptName]=detailes[d].scriptName;
det[labels.clientsCount]=detailes[d].clientsCount;
exp.push(det);
}
}
}
导出:
$("#excelExport").click(function () {
$("#jqxGrid").jqxGrid('exportdata', 'csv', chartName + ' ' + date, true, exp, true);
}
不要忘记将第五个pafameter设置为true以导出隐藏列。
毫无疑问,它看起来很硬。但它对我有用。
所以,如果你有一个很好的解决方案 - 请发表评论!!!