5.20241.9

グリッド:詳細行をPDFにエクスポート

グリッドをPDFにエクスポートする際に行詳細を含めるには、FlexGridPdfConverter.exportメソッドの呼び出す際に、次のパラメータを使用します。

  1. drawDetailRowsオプションにtrueを設定します。これで、コンポーネントに、詳細行を展開するためのスペースが確保されます。
  2. formatItemイベントに、出力ドキュメントに詳細をレンダリングするためのハンドラを設定します。
import * as core from '@mescius/wijmo';
import * as grid from '@mescius/wijmo.grid';
import * as detail from '@mescius/wijmo.grid.detail';
import * as gridPdf from '@mescius/wijmo.grid.pdf';

gridPdf.FlexGridPdfConverter.export(theGrid, 'GridDetail.pdf', {
    customCellContent: true,
    drawDetailRows: true, // 詳細行のためのスペースを確保するために必要です
    maxPages: 10,
    scaleMode: gridPdf.ScaleMode.PageWidth,
    documentOptions: {
        compress: true,
        header: {
            declarative: {
                text: '\t&[Page] of &[Pages]'
            }
        },
        footer: {
            declarative: {
                text: '\t&[Page] of &[Pages]'
            }
        },
        info: {
            author: 'C1',
            title: 'HtmlDeetail'
        }
    },
    formatItem: function(args) { // 行詳細をドキュメントにレンダリングします
        if (args.panel.cellType === grid.CellType.Cell) {
            var row = args.panel.rows[args.row];
            if (row instanceof detail.DetailRow) {
                var detail = core.Control.getControl(row.detail),
                    doc = args.canvas.document,
                    clr = args.clientRect,
                    cnr = args.contentRect;

                doc.saveState();
                args.canvas.paths.rect(clr.left, clr.top, clr.width, clr.height).clip();
                gridPdf.FlexGridPdfConverter.drawToPosition(
                    detail, doc, new core.Point(cnr.left, cnr.top), null, null, {
                        customCellContent: true
                    });
                doc.restoreState();

                args.cancel = true;
            }
        }
    }
});