2015-11-17 4 views
5

私はプロジェクトでhttp://ui-grid.info/のグリッドを使用しています。私はうまく機能する階層的なグリッドを作成しましたが、エクスポートを実行すると、トップレベルのグリッドからのみデータがエクスポートされます。サブグリッドを角度uiグリッドで書き出すことができます

これは仕様によるものであり、グリッドの標準機能であるため、サンプルコードを記述することは意味がありません。 http://ui-grid.info/docs/#/tutorialの例があります。

サブグリッド(メイングリッドとサブグリッドの両方がグリッドに表示されていることが好ましい)をエクスポートする方法はありますか?

+0

を使用すると、データ・テーブルを試してみました。 https://www.datatables。ネット/それはjqueryベースであり、これを行うjqの拡張機能があります。さらに、データテーブルは非常に敏感です。 UIグリッドはlibを非常に不必要に複雑にしました。 – Gary

答えて

3

悲しいことに答えはノーです。

すべての行をhere機能getData反復を参照し、すべての列を介して、抽出しextractedRowsの配列のものを集計するextractedFields列のアレイに追加することができるように。

これは、gridOptions 'columnDefで定義されているもの以外のデータが読み取られ、変換され、抽出されないことを意味します。

サブグリッド情報はすべての行エンティティのsubGridOptionsのプロパティ内に格納されますが、このプロパティはエクスポータ機能内では決してアクセスされません。

この現象の背後にある動機は、拡張可能なグリッド機能はアルファ段階のままであるので、他の機能でこれを支持する説得力の優先順位ではないということです。我々は一般的なソリューションを提供したい場合

さらに、CSVにサブグリッドを追加すると、設計するのは非常に難しいことができ、(例えば私も、あなたは内の列の数が異なっていた場合、それはCSV標準に準拠するとは思いませんメイングリッドとサブグリッド)。

ui-gridはオープンソースプロジェクトなので、作業中のデザインを念頭に置いている場合は、project gitHub pageで自由にディスカッションを開くか、テストして)解決し、プルリクエストを作成します。

+0

エクスポートされたファイルをCSV標準に準拠させるために、各グリッドが別々のcsvを占有している可能性があります。サブグリッドで構成されたメイングリッドのセルには、サブグリッドの外部CSVファイルへのリンクが含まれています。 共有することを少し考えました。 – gm2008

+0

リンクはどのように考えられますか?私は誠実にそれを行う標準的な方法を考えることができません – imbalind

1

私は私が実際にコードのブランチを作成し、それを適切に行うことによって行われますが、時間の制約を与えてくれたものよりも少し良くそれを行うだろう時間を持っていた場合が、私は何を私、それが働いて得ることができましたうまく働いている。

はFYI、ここで私はそれは私が望んでやってきてしまった方法があります:私だけのための変更を実装しましたので、私のグリッドオプション

、私は(グリッドメニューでCSVのエクスポートオプションをオフにPDF)。

私はそれがcustom.exporter.js名付け、exporter.jsのコピーを作成し、新しいファイルを指すように私の参照を変更しました。 custom.exporter.jsで

、私はのgetData関数のコピーを作り、getGridRowsそれを命名。 getGridRowsはgetDataと同じですが、列などを取得するすべてのものがなくてもrowsオブジェクトを返す点を除いては同じです。今のところ、私は既知の列のセットで動作するようにコーディングしているので、すべてを必要としません。

私は次のようにpdfExport機能を変更:

pdfExport: function (grid, rowTypes, colTypes) { 
       var self = this; 

       var exportData = self.getGridRows(grid, rowTypes, colTypes); 

       var docContent = []; 

       $(exportData).each(function() { 
        docContent.push(
         { 
          table: { 
           headerRows: 1, 
           widths: [70, 80, 150, 180], 
           body: [ 
           [{ text: 'Job Raised', bold: true, fillColor: 'lightgray' }, { text: 'Job Number', bold: true, fillColor: 'lightgray' }, { text: 'Client', bold: true, fillColor: 'lightgray' }, { text: 'Job Title', bold: true, fillColor: 'lightgray' }], 
           [formattedDateTime(this.entity.JobDate,false), this.entity.JobNumber, this.entity.Client, this.entity.JobTitle], 
           ] 
          } 
         }); 
        var subGridContentBody = []; 
        subGridContentBody.push([{ text: 'Defect', bold: true, fillColor: 'lightgray' }, { text: 'Vendor', bold: true, fillColor: 'lightgray' }, { text: 'Status', bold: true, fillColor: 'lightgray' }, { text: 'Sign off', bold: true, fillColor: 'lightgray' }]); 
        $(this.entity.Defects).each(function() { 
         subGridContentBody.push([this.DefectName, this.DefectVendor, this.DefectStatus, '']); 
        }); 
        docContent.push({ 
         table: { 
          headerRows: 1, 
          widths: [159, 150, 50, 121], 
          body: subGridContentBody 
         } 
        }); 
        docContent.push({ text: '', margin: 15 }); 
       }); 

       var docDefinition = { 
        content: docContent 
       } 


       if (self.isIE()) { 
        self.downloadPDF(grid.options.exporterPdfFilename, docDefinition); 
       } else { 
        pdfMake.createPdf(docDefinition).open(); 
       } 
      } 
+0

これを共有していただきありがとうございます、それは私自身のuiグリッドサブグリッドの輸出を実装しようとして非常に有用であることが判明しました。 –

+0

上記のコードで改善できることの1つは、親テーブルのテーブルヘッダーを繰り返す必要がないように、ネストしたテーブルを使用することです。 pdfmakeがこの機能を持っていることは明白ではなかったので、ここにその情報を掲載しました:http://stackoverflow.com/questions/39454842/nested-sub-tables-with-pdfmake –

関連する問題