JqWidgets:导出嵌套网格

时间:2013-10-10 12:50:17

标签: grid nested export-to-excel jqxwidgets

在使用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函数时将嵌套行推入数据数组。

是的,它有效!但仅适用于嵌套网格以及选择此网格的情况。

1 个答案:

答案 0 :(得分:2)

所以,从这一步开始,我将转向下一个方法:

  1. 使用初始JSON将所有必要的数据收集到数组中(防止您只收集单独的选定数据);

  2. 使用所有现有数据初始化父网格列,并将嵌套列标记为隐藏。然后在导出时不要忘记添加true参数来导出非/隐藏列;

  3. 将标准导出与自定义数组参数一起使用;

  4. 就是这样!

    数据收集:

    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以导出隐藏列。

    毫无疑问,它看起来很硬。但它对我有用。

    所以,如果你有一个很好的解决方案 - 请发表评论!!!