exportToPdfGrid method

PdfGrid exportToPdfGrid(
  1. SfDataGrid dataGrid,
  2. List<DataGridRow>? rows
)

Exports the SfDataGrid to PdfGrid.

If the rows is set, the given list of DataGridRow collection is exported. Typically, you can set this property to export the selected rows from SfDataGrid.

Use cellExport argument which is the callback and it will be called for each cell. You can customize the cell in pdf document.

Implementation

PdfGrid exportToPdfGrid(SfDataGrid dataGrid, List<DataGridRow>? rows) {
  rows ??= dataGrid.source.effectiveRows;
  final PdfGrid pdfGrid = PdfGrid();
  pdfGrid.style.cellPadding = PdfPaddings(
    left: 3,
    right: 3,
    top: 2,
    bottom: 2,
  );

  //final List<GridColumn> columns = dataGrid.columns;
  _columns = dataGrid.columns
      .where(
          (GridColumn column) => !excludeColumns.contains(column.columnName))
      .toList();

  //if fit all columns in one page is false then horizontal overflow is true and type is next page
  if (!fitAllColumnsInOnePage) {
    pdfGrid.style.allowHorizontalOverflow = true;
    pdfGrid.style.horizontalOverflowType = PdfHorizontalOverflowType.nextPage;
  }

  //Get the total number of Column
  final int columnCount = columns.length;

  //to add number of columns in grid column
  pdfGrid.columns.add(count: columnCount);

  //default header count value is 1 (column header)
  int headerCount = 1;

  //get the total column header count value if staked header is true
  if (dataGrid.stackedHeaderRows.isNotEmpty && exportStackedHeaders) {
    headerCount = dataGrid.stackedHeaderRows.length + headerCount;
  }

  //add headers to grid
  pdfGrid.headers.add(headerCount);

  //check if stacked header export or not
  if (dataGrid.stackedHeaderRows.isNotEmpty && exportStackedHeaders) {
    exportStackedHeaderRows(dataGrid, pdfGrid);
  }

  //Export the column headers
  exportColumnHeaders(dataGrid, columns, pdfGrid);

  // Exports the top table summary rows.
  if (exportTableSummaries) {
    exportTableSummaryRows(
        dataGrid, GridTableSummaryRowPosition.top, pdfGrid);
  }

  //Export the rows
  exportRows(columns, rows, pdfGrid);

  // Exports the bottom table summary rows.
  if (exportTableSummaries) {
    exportTableSummaryRows(
        dataGrid, GridTableSummaryRowPosition.bottom, pdfGrid);
  }

  //Can Repeate header for all pages
  pdfGrid.repeatHeader = canRepeatHeaders;

  //if fit all columns in one page is false then auto column width is true
  if (!fitAllColumnsInOnePage && !autoColumnWidth) {
    int columnIndex = 0;
    for (final GridColumn column in columns) {
      pdfGrid.columns[columnIndex].width = column.actualWidth;
      columnIndex++;
    }
  }

  return pdfGrid;
}