DevExpress v24.2 Update — Your Feedback Matters
Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.
Take the survey
Not interested
GridReportManagerService is an IReportManagerService implementation that allows you to convert a GridControl into a XtraReport that you can customize, print and/or export.
Imagine that your task is to enable the end-user to export a GridControl to a file or stream, or print it in the required format. To accomplish this task, use the GridReportManagerService which allows you to manage XtraReport objects populated with data from your GridControl .
To start using the GridReportManagerService , attach it to a TableView as shown in the code snippet below.
<dxg:GridControl ... >
...
<dxg:GridControl.View >
<dxg:TableView ... >
<dxmvvm:Interaction.Behaviors >
<dxrudex:GridReportManagerService x:Name ="EmployeesReportService" />
</dxmvvm:Interaction.Behaviors >
</dxg:TableView >
</dxg:GridControl.View >
</dxg:GridControl >
Use one of the following approaches to manage reports of the attached service:
# Example
View Example
using System.Collections.ObjectModel ;
using DevExpress.Mvvm.DataAnnotations ;
using DevExpress.Mvvm.POCO;
namespace ReportManagerServiceExample.ViewModels {
[POCOViewModel ]
public class MainViewModel {
public virtual ObservableCollection<EmployeeViewModel> Employees { get ; set ; }
public MainViewModel ( ) {
Employees = new ObservableCollection<EmployeeViewModel>();
Employees.Add(ViewModelSource.Create(() => new EmployeeViewModel() { Name = "Frankie West PhD" , Department = "Music" , EmployeeID = 0 }));
Employees.Add(ViewModelSource.Create(() => new EmployeeViewModel() { Name = "Jett Mitchell" , Department = "Music" , EmployeeID = 1 }));
Employees.Add(ViewModelSource.Create(() => new EmployeeViewModel() { Name = "Garrick Stiedemann DVM" , Department = "Music" , EmployeeID = 2 }));
Employees.Add(ViewModelSource.Create(() => new EmployeeViewModel() { Name = "Hettie Runte" , Department = "Music" , EmployeeID = 3 }));
Employees.Add(ViewModelSource.Create(() => new EmployeeViewModel() { Name = "Gabe Flatley" , Department = "Journalism" , EmployeeID = 4 }));
Employees.Add(ViewModelSource.Create(() => new EmployeeViewModel() { Name = "Zetta Beatty" , Department = "Journalism" , EmployeeID = 5 }));
Employees.Add(ViewModelSource.Create(() => new EmployeeViewModel() { Name = "Ms. Luis Jewess" , Department = "Journalism" , EmployeeID = 6 }));
Employees.Add(ViewModelSource.Create(() => new EmployeeViewModel() { Name = "Jefferey Legros III" , Department = "Management" , EmployeeID = 7 }));
Employees.Add(ViewModelSource.Create(() => new EmployeeViewModel() { Name = "Margaretta Roberts" , Department = "Management" , EmployeeID = 8 }));
}
}
}
<UserControl x:Class ="ReportManagerServiceExample.Views.MainView"
xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d ="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dx ="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxb ="http://schemas.devexpress.com/winfx/2008/xaml/bars"
xmlns:dxr ="http://schemas.devexpress.com/winfx/2008/xaml/ribbon"
xmlns:dxg ="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxrudex ="http://schemas.devexpress.com/winfx/2008/xaml/reports/userdesignerextensions"
xmlns:dxmvvm ="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:ViewModels ="clr-namespace:ReportManagerServiceExample.ViewModels"
mc:Ignorable ="d" d:DesignHeight ="300" d:DesignWidth ="300"
DataContext ="{dxmvvm:ViewModelSource Type=ViewModels:MainViewModel}" >
<Grid >
<Grid.RowDefinitions >
<RowDefinition Height ="Auto" />
<RowDefinition Height ="*" />
<RowDefinition Height ="Auto" />
</Grid.RowDefinitions >
<dxr:RibbonControl Grid.Row ="0" RibbonStyle ="Office2010" >
<dxr:RibbonControl.ToolbarItems >
<dxb:BarButtonItemLink BarItemName ="newItem" />
</dxr:RibbonControl.ToolbarItems >
<dxr:RibbonDefaultPageCategory >
<dxr:RibbonPage Caption ="Home" >
<dxr:RibbonPageGroup >
<dxb:BarSplitButtonItem Content ="Reports" ActAsDropDown ="True" LargeGlyph ="{dx:DXImage Image=Print_32x32.png}" Glyph ="{dx:DXImage Image=Print_16x16.png}" >
<dxmvvm:Interaction.Behaviors >
<dxrudex:ReportManagerBehavior Service ="{Binding ElementName=EmployeesReportService}" />
</dxmvvm:Interaction.Behaviors >
</dxb:BarSplitButtonItem >
</dxr:RibbonPageGroup >
</dxr:RibbonPage >
</dxr:RibbonDefaultPageCategory >
</dxr:RibbonControl >
<dxg:GridControl Grid.Row ="1" ItemsSource ="{Binding Employees}" Name ="grid" >
<dxg:GridControl.Columns >
<dxg:GridColumn FieldName ="EmployeeID" />
<dxg:GridColumn FieldName ="Name" />
<dxg:GridColumn FieldName ="Department" />
</dxg:GridControl.Columns >
<dxg:GridControl.TotalSummary >
<dxg:GridSummaryItem SummaryType ="Count" Alignment ="Right" />
</dxg:GridControl.TotalSummary >
<dxg:GridControl.View >
<dxg:TableView AllowPerPixelScrolling ="True" ShowFixedTotalSummary ="True" >
<dxmvvm:Interaction.Behaviors >
<dxrudex:GridReportManagerService x:Name ="EmployeesReportService" />
</dxmvvm:Interaction.Behaviors >
</dxg:TableView >
</dxg:GridControl.View >
</dxg:GridControl >
</Grid >
</UserControl >
Imports System.Collections.ObjectModel
Imports DevExpress.Mvvm.DataAnnotations
Imports DevExpress.Mvvm.POCO
Namespace ReportManagerServiceExample.ViewModels
<POCOViewModel> _
Public Class MainViewModel
Public Overridable Property Employees() As ObservableCollection(Of EmployeeViewModel)
Public Sub New ()
Employees = New ObservableCollection(Of EmployeeViewModel)()
Employees.Add(ViewModelSource.Create(Function () New EmployeeViewModel() With {.Name = "Frankie West PhD" , .Department = "Music" , .EmployeeID = 0 }))
Employees.Add(ViewModelSource.Create(Function () New EmployeeViewModel() With {.Name = "Jett Mitchell" , .Department = "Music" , .EmployeeID = 1 }))
Employees.Add(ViewModelSource.Create(Function () New EmployeeViewModel() With {.Name = "Garrick Stiedemann DVM" , .Department = "Music" , .EmployeeID = 2 }))
Employees.Add(ViewModelSource.Create(Function () New EmployeeViewModel() With {.Name = "Hettie Runte" , .Department = "Music" , .EmployeeID = 3 }))
Employees.Add(ViewModelSource.Create(Function () New EmployeeViewModel() With {.Name = "Gabe Flatley" , .Department = "Journalism" , .EmployeeID = 4 }))
Employees.Add(ViewModelSource.Create(Function () New EmployeeViewModel() With {.Name = "Zetta Beatty" , .Department = "Journalism" , .EmployeeID = 5 }))
Employees.Add(ViewModelSource.Create(Function () New EmployeeViewModel() With {.Name = "Ms. Luis Jewess" , .Department = "Journalism" , .EmployeeID = 6 }))
Employees.Add(ViewModelSource.Create(Function () New EmployeeViewModel() With {.Name = "Jefferey Legros III" , .Department = "Management" , .EmployeeID = 7 }))
Employees.Add(ViewModelSource.Create(Function () New EmployeeViewModel() With {.Name = "Margaretta Roberts" , .Department = "Management" , .EmployeeID = 8 }))
End Sub
End Class
End Namespace
See Also