2013-10-10 81 views
3

使用JqxWidges时遇到了导出使用一个JSON作为源文件的嵌套网格的问题。常用的解决方案不起作用。实际上它只导出父网格柱。JqxWidgets:导出嵌套网格

$("#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功能。

是的,它的工作原理!但只适用于嵌套网格,并且在选择此网格的情况下。

回答

2

所以,从这个步骤我移动到下一个的形式给出:

  1. 为了收集所有必需的数据转换成使用初始JSON阵列(防止你只收集单独选择的数据);

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

  3. 使用具有自定义数组参数的标准导出;

就是这样!

数据采集:

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设置成真导出隐藏的列。

没有问题,它看起来硬编码。但它适用于我。

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