Skip to main content

Print Data

  • 5 minutes to read

Run Demo: Printing Options View Example: Print and Export the GridControl

To print GridControl data, call one of the following methods:

Method Description
DataViewBase.Print Invokes the standard Print dialog that allows users to print the grid.
DataViewBase.PrintDirect Uses the default printer to print the grid.

The Print Preview window allows users to print documents and export them to a file in the required format.

PrintPreview

To invoke the Print Preview window, call one of the following methods:

Method Description
DataViewBase.ShowPrintPreview Creates a document from the View and displays the document’s Print Preview.
DataViewBase.ShowPrintPreviewDialog Creates a document from the View and displays the document’s modal Print Preview.
DataViewBase.ShowRibbonPrintPreview Creates a document from the View and displays the document’s Print Preview with the Ribbon.
DataViewBase.ShowRibbonPrintPreviewDialog Creates a document from the View and displays the document’s modal Print Preview with the Ribbon.

Add Print Preview to a Project

  1. Add the DocumentPreviewControl to the window.

  2. Specify the DocumentPreviewControl‘s name and position:

    <Window
    ...
    xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" 
    xmlns:dxp="http://schemas.devexpress.com/winfx/2008/xaml/printing">
    
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="300"/>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
    
        <dxg:GridControl Grid.Column="0" .../>
    
        <Button Grid.Column="0" Content="Print" 
                VerticalAlignment="Bottom" 
                Click="Button_Click_Print"/>
    
        <dxp:DocumentPreviewControl Grid.Column="1" x:Name="documentPreview1"/>
    </Grid>
    
  3. Use the PrintableControlLink to show the GridControl in the Print Preview window:

    using DevExpress.Xpf.Printing;
    
    private void Button_Click_Print(object sender, RoutedEventArgs e) {
        PrintableControlLink link = new PrintableControlLink(view);
        link.CreateDocument();
        documentPreview1.DocumentSource = link;
    }
    

Customize Appearance

Note

Printed GridControl ignores DataViewBase.CellTemplate and regular Template/Style properties. Refer to the Format Cell Values topic for information on what properties affect print mode.

GridControl Views have styles and templates that define printed GridControl appearance.

Example: Change Column Header Appearance

<Window
xmlns:dxgt="http://schemas.devexpress.com/winfx/2008/xaml/grid/themekeys">
<Window.Resources>
    <Style x:Key="customPrintColumnHeaderStyle"
            TargetType="dxe:BaseEdit"
            BasedOn="{StaticResource {dxgt:TableViewThemeKey ResourceKey=DefaultPrintHeaderStyle}}">
        <Setter Property="Background" Value="White" />
        <Setter Property="FontWeight" Value="Bold" />
    </Style>
</Window.Resources>

<dxg:GridControl.View>
    <dxg:TableView PrintColumnHeaderStyle="{StaticResource customPrintColumnHeaderStyle}"/>
</dxg:GridControl.View>

Example: Bind Cell Background to a Property Value

The following code sample uses brushes specified in the Color column to paint the background of Product Name cells when you print data:

ColumnBase PrintCellStyle

<!--
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxgt="http://schemas.devexpress.com/winfx/2008/xaml/grid/themekeys"
-->
<dxg:GridColumn FieldName="ProductName">
    <dxg:GridColumn.PrintCellStyle>
        <Style TargetType="dxe:TextEdit"
               BasedOn="{StaticResource {dxgt:TableViewThemeKey ResourceKey=DefaultPrintCellStyle}}">
            <Setter Property="Background" Value="{Binding RowData.Row.Color}"/>
        </Style>
    </dxg:GridColumn.PrintCellStyle>
</dxg:GridColumn>

Example: Render Images within Data Cells with PopupImageEdit

<Window ...
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
    xmlns:dxgt="http://schemas.devexpress.com/winfx/2008/xaml/grid/themekeys"
    xmlns:dxp="http://schemas.devexpress.com/winfx/2008/xaml/printing">
<!-- ... -->
<Style x:Key="ImageColumnPrintingStyle" 
       TargetType="{x:Type dxe:PopupImageEdit}" 
       BasedOn="{StaticResource {dxgt:TableViewThemeKey ResourceKey=DefaultPrintCellStyle}}">

   <Setter Property="dxp:ExportSettings.TargetType" Value="Panel"/>
   <Setter Property="DisplayTemplate">
       <Setter.Value>
           <ControlTemplate TargetType="dxe:PopupImageEdit">
               <dxe:ImageEdit Source="{Binding Path=Value}"
                              IsPrintingMode="True"/>
           </ControlTemplate>
       </Setter.Value>
   </Setter>
</Style>
<!-- ... -->
<dxg:GridColumn FieldName="Image"
                PrintCellStyle="{StaticResource ImageColumnPrintingStyle}">
    <dxg:GridColumn.EditSettings>
        <dxe:PopupImageEditSettings/>
    </dxg:GridColumn.EditSettings>
</dxg:GridColumn>

View Example: Customize the Appearance of Printed/Exported Information

To additionally customize your document, use Printing Links. For example:

  • To fully display visible columns on a page, use PrintableControlLink and specify the LinkBase.VerticalContentSplitting property:

    void Button_Click_Print(object sender, RoutedEventArgs e) {
        var link = new PrintableControlLink(view);
        link.VerticalContentSplitting = VerticalContentSplitting.Smart;
        link.ShowPrintPreview(this);
    }
    
  • To export multiple controls to the same document, use CompositeLink.

    void Button_Click_Print(object sender, RoutedEventArgs e) {
        var link1 = new PrintableControlLink(view);
        var link2 = new PrintableControlLink(view2);
        var compositeLink = new CompositeLink(new List<TemplatedLink> { link1, link2 });
        compositeLink.ShowPrintPreviewDialog(this);
    }
    
Show PrintableControlLink properties
Property Description
TemplatedLink.PageHeaderData / TemplatedLink.PageHeaderTemplate Allows you to customize a page header in the output document.
TemplatedLink.ReportHeaderData / TemplatedLink.ReportHeaderTemplate Allows you to customize a report header in the output document.
TemplatedLink.PageFooterData / TemplatedLink.PageFooterTemplate Allows you to customize a page footer in the output document.
TemplatedLink.ReportFooterData / TemplatedLink.ReportFooterTemplate Allows you to customize a report footer in the output document.

View Example: Add Page Headers and Footers to Printed/Exported Data

Table View Options

Property Description
DataViewBase.PrintTotalSummary Specifies whether the Summary Panel is printed.
DataViewBase.PrintFixedTotalSummary Specifies whether the Fixed Summary Panel is printed.
GridViewBase.PrintAllGroups Specifies whether the grid is printed with all group rows expanded.
TableView.PrintAutoWidth Specifies whether printed column widths are automatically changed to allow the grid to fit the width of the report page.
TableView.PrintColumnHeaders Specifies whether column headers are printed.
TableView.PrintGroupFooters Specifies whether group footers are printed.
BaseColumn.AllowPrinting Allows you to hide specific columns when printing or exporting a grid.

Card View Options

Property Description
DataViewBase.PrintTotalSummary Specifies whether the Summary Panel is printed.
DataViewBase.PrintFixedTotalSummary Specifies whether the Fixed Summary Panel is printed.
GridViewBase.PrintAllGroups Specifies whether the grid is printed with all group rows expanded.
CardView.PrintAutoCardWidth Specifies whether cards in the print/export output are automatically resized horizontally to fit the report page width.
CardView.PrintCardMargin Specifies the thickness of a frame around a card.
CardView.PrintMaximumCardColumns Specifies the maximum number of card columns for printing/exporting.
BaseColumn.AllowPrinting Allows you to hide specific columns when printing or exporting a grid.

TreeList View Options

Property Description
DataViewBase.PrintTotalSummary Specifies whether the Summary Panel is printed.
DataViewBase.PrintFixedTotalSummary Specifies whether the Fixed Summary Panel is printed.
TreeListView.PrintAllNodes Specifies whether the grid is printed with all nodes expanded.
TreeListView.PrintAutoWidth Specifies whether printed column width is automatically changed to allow the grid to fit the width of the report page.
TreeListView.PrintColumnHeaders Specifies whether column headers are printed.
BaseColumn.AllowPrinting Allows you to hide columns when printing or exporting a grid.

Master-Detail Options

Property Description
TableView.AllowPrintDetails Specifies whether View details are printed.
TableView.AllowPrintEmptyDetails Specifies whether View details that don’t contain any data are printed.
TableView.PrintDetailTopIndent Specifies the top print detail indent separating the details.
TableView.PrintDetailBottomIndent Specifies the bottom print detail indent separating the details.
See Also