2017-04-27 2 views
0

exportieren Ich verwende freie jqgrid 4.14 und ich muss die Daten des Rasters in CSV/Excel exportieren. Ich habe bereits eine Funktion gemacht, die alle Daten in CSV exportiert. Ich nehme die vom Server kommenden Daten auf und verwende diese Daten, um die CSV zu bilden. Aber hier ist das Problem, wie bekomme ich nur die gefilterten Daten aus dem Raster. Gibt es dafür eine Standardeigenschaft oder -funktion?Gefilterte Daten in CSV-Datei von jqgrid

Dies ist meine Funktion -

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;  
    } 

Antwort

0

Wenn ich dein Problem richtig verstehe, dann sollten Sie lastSelectedData Parameter statt data Parameter zu verwenden. Der Parameter data enthält Originaldaten. Der Parameter enthält die gefilterten und sortierten Daten (alle Seiten). Sehen Sie sich die Demos an, die ich für the answer erstellt habe.

+0

danke wie immer :) – shv22

+0

@ shv22: Gern geschehen! – Oleg

+0

Wenn der Raster nicht gefiltert wird, bleibt der Parameter lastSelectedData leer? – shv22