2017-04-27 5 views
0

무료 jqgrid 4.14를 사용 중이며 그리드의 데이터를 CSV/Excel로 내보내야합니다. 나는 이미 모든 데이터를 CSV로 내보내는 기능을 만들었습니다. 서버에서 오는 데이터를 캡처하고 해당 데이터를 사용하여 CSV를 구성합니다. 그러나 여기서 문제는 어떻게 그리드에서 필터링 된 데이터 만 가져올 것인가입니다. 거기에 어떤 기본 속성이나 기능이 있습니까? 내가 제대로 문제를 이해한다면, 당신은 lastSelectedData 매개 변수 대신 data 매개 변수를 사용한다필터링 된 데이터를 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

-

내 기능입니다. data 매개 변수에 원래 데이터가 들어 있습니다. lastSelectedData 매개 변수에는 필터링되고 정렬 된 데이터 (모든 페이지)가 들어 있습니다. the answer에 대해 만든 데모를 참조하십시오.

+0

언제나처럼 고마워요. – shv22

+0

@ shv22 : 오신 것을 환영합니다! – Oleg

+0

그리드에 필터링이 없으면 lastSelectedData 매개 변수가 비어 있습니다? – shv22