2016-07-17 15 views
2

私は剣道グリッドを持っており、データをExcelファイルにエクスポートできます。私のグリッドでは、値を持たない列がいくつか隠されていることがあります。しかし、私はこれらの非表示の列(私は彼らのヘッダーを意味する)を輸出されたExcelファイルに入れてもらいたい。剣道グリッドの非表示の列を表示excel

私の剣道グリッド設定でExcelの設定を示すコードです。

excel: { 
     fileName: new Date().toString() + ".xlsx", 
     allPages: true, 
     }, 

助けていただければ幸いです。

答えて

-1

これを制御するためにJavaScriptを追加できます。

var exportFlag = true; 

$("#gridName").data("kendoGrid").bind("excelExport", function (e) { 
    if (exportFlag) { 
     e.sender.showColumn("hiddenColumnName"); 
     e.preventDefault(); 
     exportFlag = false; 
     e.sender.saveAsExcel(); 
    } else { 
     e.sender.hideColumn("hiddenColumnName"); 
     exportFlag = true; 
    } 
}); 

基本的にこれを使用すると、[エクスポート]ボタンをクリックしたときにexcelExportイベントをキャッチし、それはあなたの文書を保存saveAsExcel()機能を起動する前に、グリッド内の非表示の列を示しています。次に列を再び非表示にします。

ここにはExampleがあります。

+0

感謝。最初の点は、非表示の列を自動的に認識させたいということです(手動ではなく、名前を付けてください)。 P.S.あなたが提供した例は正しいとは思われません! – Pedram

+0

基本的には、各列をループして 'hidden'プロパティが' true'か 'false'かどうかを調べる方法が必要です。私はこれを理解できるかどうかを調べるためにいくつかの研究をします。この例で何が間違っていますか?グリッドには3列あり、3列目は非表示です。 [エクスポート]ボタンをクリックすると、Excelドキュメントの非表示の列が表示されます。 – Supersnake

+0

Telerikはイランでサポートされていないため、この例は機能しませんでした。 (そのウェブサイトからの直接参照)。私はプロキシを使用して輸出結果を確認しなければなりませんでしたが、今はそれが効いています。しかし、最初の問題は依然として存在する。私は隠された列が自動的に私のExcelファイルにも必要です。 – Pedram

1

あなたは隠された定義配列の列を持つことができます。真と以下のように単純にエクスポートする前に、列の配列と表示/非表示の列を横断:私は同じようなことを達成するために探していた

 function excelExport(e) { 
       if (!exportFlag) { 
        for(var i=0; i < columns.length; i++) { 
         if(columns[i].hidden) 
          e.sender.showColumn(i); 
        } 
        e.preventDefault(); 
        exportFlag = true; 
        setTimeout(function() { 
        e.sender.saveAsExcel(); 
        }); 
       } else { 
        for(var i=0; i < columns.length; i++) { 
          if(columns[i].hidden) 
           e.sender.hideColumn(i); 
         } 
        exportFlag = false; 
       } 
     } 
0

エクスポート後に列を再び非表示にする必要があるので、@Ankurによって提供された回答をわずかに変更して使用しました。

コードを次のようにあなたの応答のための

excelExport(e) { 
       Spa.startLoading(); // loading overlay to hide the columns showing then hiding again 
       var columns = e.sender.columns; 
       var hiddenColumnNumbers = []; 
       if (!exportFlag) { 
        for (let i = 0; i < columns.length; i++) { 
         if (columns[i].hidden) { 
          e.sender.showColumn(i); 
          hiddenColumnNumbers.push(i); 
         } 
        } 
        e.preventDefault(); 
        exportFlag = true; 
        setTimeout(() => { 
         e.sender.saveAsExcel(); 
         for (let j = 0; j < columns.length; j++) { 
          if (hiddenColumnNumbers.indexOf(j) > -1) { 
           e.sender.hideColumn(j); 
          } 
         } 
         Spa.stopLoading(); // hide loading overlay 
        }); 
       } else { 
        for (let k = 0; k < columns.length; k++) { 
         if (columns[k].hidden) 
          e.sender.hideColumn(k); 
        } 
        exportFlag = false; 
        Spa.stopLoading(); // hide loading overlay 
       } 
      }, 
関連する問題