exportToPdfGrid method
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;
}