2017-04-27 82 views
0

我正在使用免费的jqgrid 4.14,我需要将网格的数据导出为CSV/Excel。我已经做出了将所有数据导出到CSV的功能。 我正在捕获来自服务器的数据并使用该数据形成CSV。但这里的问题是,我将如何从网格获得过滤数据。是否有任何默认属性或功能?从jqgrid导出过滤的数据为CSV

这是我的功能 -

function convertor (gridData, scopes, ShowLabel, fileTitle,grid_header_column_value,id) { 


     scopes.grid_header_columns = scopes.grid_header_column_value[id]; 
     var bg = "<button class='btnfilter' />"; 
     for (var i = 0; i < scopes.grid_hidden_columns[id].length; i++) { 
      if (includes(scopes.grid_header_columns,scopes.grid_hidden_columns[id][i]) == true) { 
       var indexhed = scopes.grid_header_columns.indexOf(scopes.grid_hidden_columns[id][i]); 
       scopes.grid_header_columns.splice(indexhed, 1); 
      } 
     } 
     var arrData = typeof gridData != 'object' ? JSON.parse(gridData) : gridData; 
     var CSV = ''; 
     if (ShowLabel) { 
      var row = ""; 
      var count = 0; 
      if (fileTitle != "") 
      { 
       var htmltext = fileTitle.split(','); 
       for (var jj = 0; jj < htmltext.length; jj++) 
       { 
        var datacont = document.getElementById(htmltext[jj]); 
        if (datacont == undefined) 
         datacont = ''; 
        else 
         datacont = datacont.textContent + '\r\n'; 
        CSV += datacont; 
       } 
      } 
      for (var index in arrData[0]) { 
       var a = scopes.gridextra.indexOf(index); 
       if (a == -1 && scopes.grid_header_columns[count] != undefined) { 
        row += scopes.grid_header_columns[count].replace(bg, "") + ','; 
        count++; 
       } 
      } 
      row = row.slice(0, -1); 
      CSV += row + '\r\n'; 
     } 

     for (var i = 0; i < arrData.length; i++) { 

      var row = ""; 
      for (var index in arrData[i]) { 

       var a = scopes.gridextra.indexOf(index); 

       if (a == -1) { 
        if (isNaN(arrData[i][index]) == false) { 
          if(arrData[i][index]<0) { 
           if(arrData[i][index] == -2) 
            arrValue = '="'+"*"+'"'; 
           else 
            arrValue = '="'+"N/A"+'"'; 
          } 
          else 
           var arrValue = arrData[i][index] == null ? "" : '="' + arrData[i][index] + '"'; 
        } 
        else 
          var arrValue = arrData[i][index] == null ? "" : '="' + arrData[i][index] + '"'; 
         row += arrValue + ','; 
       } 
      } 
      row.slice(0, row.length - 1); 
      CSV += row + '\r\n'; 
     } 
     if (CSV == '') { 
      growl.error("Invalid data"); 
      return; 
     } 
     csvData = CSV;  
    } 

回答

0

如果我正确理解你的问题,那么你应该使用lastSelectedData参数,而不是data参数。 data参数包含原始数据。 lastSelectedData参数包含过滤和排序的数据(所有页面)。请参阅我为the answer创建的演示。

+0

一如既往的感谢:) – shv22

+0

@ shv22:不客气! – Oleg

+0

如果网格上没有过滤,则lastSelectedData参数保持为空? – shv22