2013-10-10 84 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設置成真導出隱藏的列。

沒有問題,它看起來硬編碼。但它適用於我。

所以,如果你有一個很好的解決方案 - 請留下評論!