Using following code, we can print & preview of RadGridView using Telerik Reproting with grouping, filtering functionality of RadGridView with nos. of columns are generated dynamic in the Report.
Code:
Thanks,
Yogesh Goswami
                                Code:
using System;<br>using System.Collections.Generic;<br>using System.Linq;<br>using System.Windows;<br>using Telerik.Reporting;<br>using System.Collections.ObjectModel;<br>using Telerik.Reporting.Processing;<br>using Telerik.Windows.Controls;<br>using Telerik.Windows.Controls.GridView;<br><br>namespace YourNamespaceHere<br>{<br>    /// <summary><br>    /// Interaction logic for PrintPreviewTelerikReportViewer.xaml<br>    /// </summary><br>    public partial class PrintPreviewTelerikReportViewer : Window<br>    {<br>        #region Variables<br>        RadGridView _CurrentRadGridView = new RadGridView();<br>        #endregion<br><br>        #region Ctor<br>        /// <summary><br>        /// ctor<br>        /// </summary><br>        /// <param name="p_RadGridView"></param><br>        public PrintPreviewTelerikReportViewer(RadGridView p_RadGridView)//this is for print preview<br>        {<br>            try<br>            {<br>                InitializeComponent();<br>                TitleBackground = Params.RibbonThemeSolidColor;<br>                _CurrentRadGridView = p_RadGridView;<br>                this.Loaded += new RoutedEventHandler(PrintPreviewTelerikReportViewer_Loaded);<br>            }<br>            catch (Exception _Exception)<br>            {<br>                MessageBox.Show(_Exception.Message.ToString());<br>            }<br>        }<br>        #endregion<br><br>        #region Events<br>        /// <summary><br>        /// loaded event<br>        /// </summary><br>        /// <param name="sender"></param><br>        /// <param name="e"></param><br>        void PrintPreviewTelerikReportViewer_Loaded(object sender, RoutedEventArgs e)<br>        {<br>            try<br>            {<br>                rvCommonReportViewer.ReportSource = GenerateReport(_CurrentRadGridView);<br>                rvCommonReportViewer.RefreshReport();<br>                rvCommonReportViewer.ViewMode = Telerik.ReportViewer.Wpf.ViewMode.PrintPreview;<br>            }<br>            catch (Exception _Exception)<br>            {<br>                MessageBox.Show(_Exception.Message.ToString());<br>            }<br>        }<br>        #endregion<br><br>        #region Methods<br>        /// <summary><br>        /// print telerik report static method<br>        /// </summary><br>        /// <param name="p_RadGridView"></param><br>        public static void PrintTelerikReport(RadGridView p_RadGridView)<br>        {<br>            try<br>            {<br>                ReportSource _ReportSource = GenerateReport(p_RadGridView);<br>                ReportProcessor _ReportProcessor = new ReportProcessor();<br>                _ReportProcessor.PrintReport(_ReportSource, null);<br>            }<br>            catch (Exception _Exception)<br>            {<br>                MessageBox.Show(_Exception.Message.ToString());<br>            }<br>        }<br><br>        /// <summary><br>        /// generate report static Methods<br>        /// </summary><br>        /// <param name="p_RadGridView"></param><br>        /// <returns></returns><br>        private static Telerik.Reporting.Report GenerateReport(RadGridView p_RadGridView)<br>        {<br>            #region Variables For Report<br><br>            Telerik.Reporting.Report _testReport = new Telerik.Reporting.Report();<br><br>            Telerik.Reporting.GroupHeaderSection _GroupHeaderSection = new Telerik.Reporting.GroupHeaderSection();<br>            Telerik.Reporting.GroupFooterSection _GroupFooterSection = new Telerik.Reporting.GroupFooterSection();<br>            Telerik.Reporting.PageFooterSection _PageFooterSection = new Telerik.Reporting.PageFooterSection();<br>            Telerik.Reporting.TextBox _CurrentTimeTextBox = new Telerik.Reporting.TextBox();<br>            Telerik.Reporting.TextBox _PageInfoTextBox = new Telerik.Reporting.TextBox();<br>            Telerik.Reporting.ReportHeaderSection _ReportHeaderSection = new Telerik.Reporting.ReportHeaderSection();<br>            Telerik.Reporting.TextBox _TitleTextBox = new Telerik.Reporting.TextBox();<br>            Telerik.Reporting.DetailSection _DetailSection = new Telerik.Reporting.DetailSection();<br><br>            Telerik.Reporting.Group _Group = new Telerik.Reporting.Group();<br><br>            Telerik.Reporting.Drawing.StyleRule _StyleRule1 = new Telerik.Reporting.Drawing.StyleRule();<br>            Telerik.Reporting.Drawing.StyleRule _StyleRule2 = new Telerik.Reporting.Drawing.StyleRule();<br>            Telerik.Reporting.Drawing.StyleRule _StyleRule3 = new Telerik.Reporting.Drawing.StyleRule();<br>            Telerik.Reporting.Drawing.StyleRule _StyleRule4 = new Telerik.Reporting.Drawing.StyleRule();<br><br>            double _Headerlocation = 0.02;<br>            double _GroupHeaderlocationY = 0.02;<br>            double _GroupHeaderlocationX = 0.02;<br>            #endregion<br><br>            #region This is for Detail<br>            //this is for group detail<br>            foreach (ColumnGroupDescriptor _ColumnGroupDescriptor in p_RadGridView.GroupDescriptors)<br>            {<br>                _Group.Groupings.Add(new Telerik.Reporting.Grouping("=Fields." + _ColumnGroupDescriptor.Column.UniqueName));<br><br>                Telerik.Reporting.TextBox _tbHeader = new Telerik.Reporting.TextBox();<br>                _tbHeader.CanGrow = true;<br>                _tbHeader.Location = new Telerik.Reporting.Drawing.PointU(Telerik.Reporting.Drawing.Unit.Inch(_GroupHeaderlocationX), Telerik.Reporting.Drawing.Unit.Inch(_GroupHeaderlocationY));<br>                _tbHeader.Size = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(5.0), Telerik.Reporting.Drawing.Unit.Inch(0.30000000596046448D));<br>                _tbHeader.Style.Font.Bold = true;<br>                _tbHeader.Style.Font.Name = "Segoe UI";<br>                _tbHeader.Style.Font.Size = Telerik.Reporting.Drawing.Unit.Point(8D);<br>                _tbHeader.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Left;<br>                _tbHeader.Value = "=Fields." + _ColumnGroupDescriptor.Column.UniqueName;<br><br>                _GroupHeaderSection.Items.Add(_tbHeader);<br><br>                _GroupHeaderlocationY += 0.20;<br>                _GroupHeaderlocationX += 0.10;<br>            }<br><br>            //this is for simple detail<br>            foreach (Telerik.Windows.Controls.GridViewColumn _GridViewColumn in p_RadGridView.Columns)<br>            {<br>                if (_GridViewColumn.GetType() != typeof(GridViewSelectColumn) && _GridViewColumn.IsVisible != false)<br>                {<br>                    double _DataWidth = Convert.ToDouble(_GridViewColumn.Width.Value / 100);<br><br>                    Telerik.Reporting.TextBox _tbHeader = new Telerik.Reporting.TextBox();<br>                    _tbHeader.CanGrow = true;<br>                    if (p_RadGridView.GroupDescriptors.Count != 0)<br>                    {<br>                        _tbHeader.Location = new Telerik.Reporting.Drawing.PointU(Telerik.Reporting.Drawing.Unit.Inch(_Headerlocation), Telerik.Reporting.Drawing.Unit.Inch(_GroupHeaderlocationY));<br>                    }<br>                    else<br>                    {<br>                        _tbHeader.Location = new Telerik.Reporting.Drawing.PointU(Telerik.Reporting.Drawing.Unit.Inch(_Headerlocation), Telerik.Reporting.Drawing.Unit.Inch(0.02));<br>                    }<br>                    _tbHeader.Size = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(_DataWidth), Telerik.Reporting.Drawing.Unit.Inch(0.40000000596046448D));<br>                    _tbHeader.Style.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(160)))), ((int)(((byte)(218)))));<br>                    _tbHeader.Style.Font.Bold = true;<br>                    _tbHeader.Style.Font.Name = "Segoe UI";<br>                    _tbHeader.Style.Font.Size = Telerik.Reporting.Drawing.Unit.Point(8D);<br>                    _tbHeader.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Center;<br>                    _tbHeader.StyleName = "Caption";<br>                    _tbHeader.Value = _GridViewColumn.Header.ToString();<br><br>                    _GroupHeaderSection.Items.Add(_tbHeader);<br><br><br><br>                    Telerik.Reporting.TextBox _tbData = new Telerik.Reporting.TextBox();<br>                    _tbData.Location = new Telerik.Reporting.Drawing.PointU(Telerik.Reporting.Drawing.Unit.Inch(_Headerlocation), Telerik.Reporting.Drawing.Unit.Inch(3.9577484130859375E-05D));<br>                    _tbData.Size = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(_DataWidth), Telerik.Reporting.Drawing.Unit.Inch(0.20));<br>                    _tbData.Style.Font.Name = "Segoe UI";<br>                    _tbData.Style.Font.Size = Telerik.Reporting.Drawing.Unit.Point(8D);<br>                    _tbData.Value = "=Fields." + _GridViewColumn.UniqueName;<br><br>                    _DetailSection.Items.Add(_tbData);<br><br>                    _Headerlocation += Convert.ToDouble(_GridViewColumn.Width.Value / 100);<br>                }<br>            }<br>            #endregion<br><br>            #region This is for Page Footer<br>            // labelsGroupFooterSection<br>            _GroupFooterSection.Height = Telerik.Reporting.Drawing.Unit.Inch(0.099999904632568359D);<br>            _GroupFooterSection.Name = "labelsGroupFooterSection";<br>            _GroupFooterSection.Style.Visible = false;<br><br>            // pageFooter<br>            _PageFooterSection.Height = Telerik.Reporting.Drawing.Unit.Inch(0.44166669249534607D);<br>            _PageFooterSection.Items.AddRange(new Telerik.Reporting.ReportItemBase[] { _CurrentTimeTextBox, _PageInfoTextBox });<br>            _PageFooterSection.Name = "pageFooter";<br><br>            // currentTimeTextBox<br>            _CurrentTimeTextBox.Location = new Telerik.Reporting.Drawing.PointU(Telerik.Reporting.Drawing.Unit.Inch(0.02083333395421505D), Telerik.Reporting.Drawing.Unit.Inch(0.02083333395421505D));<br>            _CurrentTimeTextBox.Name = "currentTimeTextBox";<br>            _CurrentTimeTextBox.Size = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(3.1979167461395264D), Telerik.Reporting.Drawing.Unit.Inch(0.40000000596046448D));<br>            _CurrentTimeTextBox.Style.Font.Name = "Segoe UI";<br>            _CurrentTimeTextBox.StyleName = "PageInfo";<br>            _CurrentTimeTextBox.Value = "=NOW()";<br><br>            // pageInfoTextBox<br>            _PageInfoTextBox.Location = new Telerik.Reporting.Drawing.PointU(Telerik.Reporting.Drawing.Unit.Inch(3.2395832538604736D), Telerik.Reporting.Drawing.Unit.Inch(0.02083333395421505D));<br>            _PageInfoTextBox.Name = "pageInfoTextBox";<br>            _PageInfoTextBox.Size = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(3.1979167461395264D), Telerik.Reporting.Drawing.Unit.Inch(0.40000000596046448D));<br>            _PageInfoTextBox.Style.Font.Name = "Segoe UI";<br>            _PageInfoTextBox.Style.TextAlign = Telerik.Reporting.Drawing.HorizontalAlign.Right;<br>            _PageInfoTextBox.StyleName = "PageInfo";<br>            _PageInfoTextBox.Value = "=PageNumber";<br>            #endregion<br><br>            #region This is for Page Header<br>            // labelsGroupHeaderSection<br>            _GroupHeaderSection.Height = Telerik.Reporting.Drawing.Unit.Inch(0.44166669249534607D);<br>            _GroupHeaderSection.Name = "labelsGroupHeaderSection";<br>            _GroupHeaderSection.PrintOnEveryPage = true;<br><br>            // reportHeader<br>            _ReportHeaderSection.Height = Telerik.Reporting.Drawing.Unit.Inch(0.35833343863487244D);<br>            _ReportHeaderSection.Items.AddRange(new Telerik.Reporting.ReportItemBase[] {<br>            _TitleTextBox});<br>            _ReportHeaderSection.Name = "reportHeader";<br><br>            // titleTextBox<br>            _TitleTextBox.Location = new Telerik.Reporting.Drawing.PointU(Telerik.Reporting.Drawing.Unit.Inch(0.20000000298023224D), Telerik.Reporting.Drawing.Unit.Inch(0D));<br>            _TitleTextBox.Name = "titleTextBox";<br>            _TitleTextBox.Size = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(6.2375001907348633D), Telerik.Reporting.Drawing.Unit.Inch(0.31999999284744263D));<br>            _TitleTextBox.Style.Color = System.Drawing.Color.Black;<br>            _TitleTextBox.Style.Font.Name = "Segoe UI";<br>            _TitleTextBox.StyleName = "Title";<br>            _TitleTextBox.Value = "Test Summary Report";<br>            #endregion<br><br>            // detail<br>            _DetailSection.Height = Telerik.Reporting.Drawing.Unit.Inch(0.20);<br>            _DetailSection.Name = "detail";<br><br>            _Group.GroupFooter = _GroupFooterSection;<br>            _Group.GroupHeader = _GroupHeaderSection;<br><br>            _testReport.Groups.AddRange(new Telerik.Reporting.Group[] { _Group });<br>            _testReport.Items.AddRange(new Telerik.Reporting.ReportItemBase[] { _GroupHeaderSection, _GroupFooterSection, _PageFooterSection, _ReportHeaderSection, _DetailSection });<br><br>            #region This is for Style<br>            _testReport.PageSettings.Margins = new Telerik.Reporting.Drawing.MarginsU(Telerik.Reporting.Drawing.Unit.Inch(1D), Telerik.Reporting.Drawing.Unit.Inch(1D), Telerik.Reporting.Drawing.Unit.Inch(1D), Telerik.Reporting.Drawing.Unit.Inch(1D));<br>            _testReport.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.Letter;<br>            _testReport.Style.BackgroundColor = System.Drawing.Color.White;<br>            _testReport.Style.BorderColor.Bottom = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(160)))), ((int)(((byte)(218)))));<br>            _testReport.Style.BorderColor.Default = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(160)))), ((int)(((byte)(218)))));<br>            _testReport.Style.BorderColor.Left = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(160)))), ((int)(((byte)(218)))));<br>            _testReport.Style.BorderColor.Right = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(160)))), ((int)(((byte)(218)))));<br>            _testReport.Style.BorderColor.Top = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(160)))), ((int)(((byte)(218)))));<br>            _testReport.Style.BorderStyle.Bottom = Telerik.Reporting.Drawing.BorderType.Solid;<br>            _testReport.Style.BorderStyle.Left = Telerik.Reporting.Drawing.BorderType.Solid;<br>            _testReport.Style.BorderStyle.Right = Telerik.Reporting.Drawing.BorderType.Solid;<br>            _testReport.Style.BorderStyle.Top = Telerik.Reporting.Drawing.BorderType.Solid;<br>            _testReport.Style.LineColor = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(160)))), ((int)(((byte)(218)))));<br>            _StyleRule1.Selectors.AddRange(new Telerik.Reporting.Drawing.ISelector[] {<br>            new Telerik.Reporting.Drawing.StyleSelector("Title")});<br>            _StyleRule1.Style.Color = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(58)))), ((int)(((byte)(112)))));<br>            _StyleRule1.Style.Font.Name = "Tahoma";<br>            _StyleRule1.Style.Font.Size = Telerik.Reporting.Drawing.Unit.Point(18D);<br>            _StyleRule2.Selectors.AddRange(new Telerik.Reporting.Drawing.ISelector[] {<br>            new Telerik.Reporting.Drawing.StyleSelector("Caption")});<br>            _StyleRule2.Style.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(58)))), ((int)(((byte)(112)))));<br>            _StyleRule2.Style.Color = System.Drawing.Color.White;<br>            _StyleRule2.Style.Font.Name = "Tahoma";<br>            _StyleRule2.Style.Font.Size = Telerik.Reporting.Drawing.Unit.Point(10D);<br>            _StyleRule2.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Middle;<br>            _StyleRule3.Selectors.AddRange(new Telerik.Reporting.Drawing.ISelector[] {<br>            new Telerik.Reporting.Drawing.StyleSelector("Data")});<br>            _StyleRule3.Style.Color = System.Drawing.Color.Black;<br>            _StyleRule3.Style.Font.Name = "Tahoma";<br>            _StyleRule3.Style.Font.Size = Telerik.Reporting.Drawing.Unit.Point(9D);<br>            _StyleRule3.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Middle;<br>            _StyleRule4.Selectors.AddRange(new Telerik.Reporting.Drawing.ISelector[] {<br>            new Telerik.Reporting.Drawing.StyleSelector("PageInfo")});<br>            _StyleRule4.Style.Color = System.Drawing.Color.Black;<br>            _StyleRule4.Style.Font.Name = "Tahoma";<br>            _StyleRule4.Style.Font.Size = Telerik.Reporting.Drawing.Unit.Point(8D);<br>            _StyleRule4.Style.VerticalAlign = Telerik.Reporting.Drawing.VerticalAlign.Middle;<br>            _testReport.StyleSheet.AddRange(new Telerik.Reporting.Drawing.StyleRule[] {<br>            _StyleRule1,<br>            _StyleRule2,<br>            _StyleRule3,<br>            _StyleRule4});<br>            _testReport.Width = Telerik.Reporting.Drawing.Unit.Inch(6.4375D);<br>            #endregion<br><br>            _testReport.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.A4;<br><br>            //_testReport.DataSource = p_RadGridView.ItemsSource;//this is for all data<br>            _testReport.DataSource = p_RadGridView.Items;//this is for filter grid<br>            return _testReport;<br>        }<br>        #endregion<br>    }<br>}<br>Thanks,
Yogesh Goswami
