Visible false columns to export

1 posts, 0 answers
  1. Amitkumar
    Amitkumar avatar
    66 posts
    Member since:
    Aug 2009

    Posted 20 Aug 2012 Link to this post

    HI
    visible false column exporting in my application.

    if i have 3 columns in my RadGridView, how do i export only the 2 columns?

    I only want to visible false the column for export purpose only 
    Here i attached my code.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.Collections.ObjectModel;
    using System.Xml.Linq;
     
    namespace RadGridViewPrint
    {
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
     
                DataContext = new MyDataContext();
            }
     
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                PrintExportExtensions ex = new PrintExportExtensions();
                ex.Print(RadGridView1);
            }
     
            private void Button2_Click(object sender, RoutedEventArgs e)
            {
                PrintExportExtensions ex = new PrintExportExtensions();
     
                var hiddenColumns = new[] { "CustomerID" };
                foreach (var columnName in hiddenColumns)
                {
                    this.RadGridView1.Columns[columnName].IsVisible = false;
                }
     
                ex.ExportToExcel(RadGridView1);
     
                foreach (var columnName in hiddenColumns)
                {
                    this.RadGridView1.Columns[columnName].IsVisible = true;
                }
                
            }
     
            private void Button3_Click(object sender, RoutedEventArgs e)
            {
                PrintExportExtensions ex = new PrintExportExtensions();
                ex.Export(RadGridView1);
            }
        }
        public class MyDataContext
        {
            ObservableCollection<Customer> _Customers;
            public ObservableCollection<Customer> Customers
            {
                get
                {
                    if (_Customers == null)
                    {
                        _Customers = new ObservableCollection<Customer>();
     
                        var document = XDocument.Load("Customers.xml");
                        foreach (var element in document.Descendants("Customers"))
                        {
                            var customer = new Customer();
                            customer.CustomerID = element.Element("CustomerID").Value;
                            customer.CompanyName = element.Element("CompanyName").Value;
                            customer.Country = element.Element("Country").Value;
                            customer.City = element.Element("City").Value;
                            customer.ContactName = element.Element("ContactName").Value;
                            customer.ContactTitle = element.Element("ContactTitle").Value;
                            customer.Address = element.Element("Address").Value;
                            customer.PostalCode = element.Element("PostalCode") != null ? element.Element("PostalCode").Value : null;
                            customer.Phone = element.Element("Phone").Value;
                            customer.Fax = element.Element("Fax") != null ? element.Element("Fax").Value : null;
                            customer.Bool = (bool)element.Element("Bool");
     
                            _Customers.Add(customer);
                        }
                    }
     
                    return _Customers;
                }
            }
        }
     
    }

    Print extension class is.

    using System.Collections.Generic;
    using System.Linq;
    using Telerik.Windows.Controls;
    using System.Windows.Media;
    using Telerik.Windows.Data;
    using Telerik.Windows.Documents.Model;
    using System.Collections;
    using Telerik.Windows.Documents.FormatProviders.Pdf;
    using Telerik.Windows.Documents.FormatProviders.Html;
    using System.IO;
    using System.ComponentModel;
    using System.Windows;
    using System;
    using Microsoft.Win32;
    using System.Windows.Controls;
    using Telerik.Windows.Documents.FormatProviders;
    using Telerik.Windows.Controls.GridView;
     
    namespace RadGridViewPrint
    {
        public class PrintExportExtensions : DependencyObject, INotifyPropertyChanged
        {
            public PrintExportExtensions()
            {
                //DocumentFormatProvidersManager.RegisterFormatProvider(new HtmlFormatProvider());
     
                this.HeaderBackground = Color.FromArgb(255, 127, 127, 127);
                this.RowBackground = Color.FromArgb(255, 251, 247, 255);
                this.GroupHeaderBackground = Color.FromArgb(255, 216, 216, 216);
            }
     
            private void OnPropertyChanged(string propertyName)
            {
                if (this.PropertyChanged != null)
                {
                    this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
                }
            }
     
            private Color _headerBackground;
            private Color _rowBackground;
            private Color _groupHeaderBackground;
     
            public Color GroupHeaderBackground
            {
                get
                {
                    return this._groupHeaderBackground;
                }
                set
                {
                    if (this._groupHeaderBackground != value)
                    {
                        this._groupHeaderBackground = value;
                        OnPropertyChanged("GroupHeaderBackground");
                    }
                }
            }
     
            public Color HeaderBackground
            {
                get
                {
                    return this._headerBackground;
                }
                set
                {
                    if (this._headerBackground != value)
                    {
                        this._headerBackground = value;
                        OnPropertyChanged("HeaderBackground");
                    }
                }
            }
     
            public Color RowBackground
            {
                get
                {
                    return this._rowBackground;
                }
                set
                {
                    if (this._rowBackground != value)
                    {
                        this._rowBackground = value;
                        OnPropertyChanged("RowBackground");
                    }
                }
            }
     
     
            public void Export(object parameter)
            {
                SaveFileDialog dialog = new SaveFileDialog();
                dialog.DefaultExt = "*.pdf";
                dialog.Filter = "Adobe PDF Document (*.pdf)|*.pdf";
     
                if (dialog.ShowDialog() == true)
                {
                    RadDocument document = CreateDocument(parameter as RadGridView);
     
                    document.LayoutMode = DocumentLayoutMode.Paged;
     
                    document.Measure(RadDocument.MAX_DOCUMENT_SIZE);
                    document.Arrange(new RectangleF(PointF.Empty, document.DesiredSize));
                    document.SectionDefaultPageOrientation = PageOrientation.Landscape;
                    Telerik.Windows.Documents.Layout.Padding padding = new Telerik.Windows.Documents.Layout.Padding(20);
                    document.SectionDefaultPageMargin = padding;
                    document.SectionDefaultPageSize = new Size(826, 1160);
                    PdfFormatProvider provider = new PdfFormatProvider();
     
                    using (Stream output = dialog.OpenFile())
                    {
                        provider.Export(document, output);
                    }
                }
            }
     
            public void ExportToExcel(object parameter)
            {
                try
                {
                    SaveFileDialog dialog = new SaveFileDialog();
                    dialog.DefaultExt = "*.xls";
                    dialog.Filter = "Adobe PDF Document (*.xls)|*.xls";
     
                    if (dialog.ShowDialog() == true)
                    {
                        RadDocument document = CreateDocument(parameter as RadGridView);
     
                        document.LayoutMode = DocumentLayoutMode.Paged;
     
                        document.Measure(RadDocument.MAX_DOCUMENT_SIZE);
                        document.Arrange(new RectangleF(PointF.Empty, document.DesiredSize));
                        document.SectionDefaultPageOrientation = PageOrientation.Landscape;
                        Telerik.Windows.Documents.Layout.Padding padding = new Telerik.Windows.Documents.Layout.Padding(20);
                        document.SectionDefaultPageMargin = padding;
                        document.SectionDefaultPageSize = new Size(826, 1160);
                        HtmlFormatProvider provider = new HtmlFormatProvider();
     
                        using (Stream output = dialog.OpenFile())
                        {
                            provider.Export(document, output);
                        }
                    }
     
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
     
     
            bool isPrintStarted = false;
            //bool isExportStarted = false;
            public void Print(object parameter)
            {
                RadGridView grid = (RadGridView)parameter;
                RadRichTextBox rtb = new RadRichTextBox() { Height = 0 };
     
                rtb.Name = "RadRichTextBox1";
     
                Grid parent = grid.ParentOfType<Grid>();
                if (parent != null && parent.FindName(rtb.Name) == null)
                {
                    parent.Children.Add(rtb);
                    rtb.ApplyTemplate();
                }
     
                rtb.Dispatcher.BeginInvoke((Action)(() =>
                    {
                        rtb.Document = CreateDocument(grid);
                    }));
                RadWindow window = new RadWindow();
                Grid g = new Grid();
                //g.ColumnDefinitions.Add(new ColumnDefinition());
                g.ColumnDefinitions.Add(new ColumnDefinition());
                g.RowDefinitions.Add(new RowDefinition());
                g.HorizontalAlignment = HorizontalAlignment.Stretch;
                g.VerticalAlignment = VerticalAlignment.Stretch;
                Button b = new Button();
                b.Height = 50;
                b.Width = 100;
                b.Content = "Print";
                b.Click += (s, e) =>
                {
                    rtb.Commands.ChangePageOrientationCommand.Execute(PageOrientation.Landscape);
                    rtb.ChangeSectionPageOrientation(PageOrientation.Landscape);
                    rtb.Document.SectionDefaultPageOrientation = PageOrientation.Landscape;
                    Telerik.Windows.Documents.Layout.Padding padding = new Telerik.Windows.Documents.Layout.Padding(20);
                    rtb.Commands.ChangePageMarginsCommand.Execute(padding);
                    rtb.Document.SectionDefaultPageMargin = padding;
                    rtb.ChangeSectionPageMargin(padding);
                    rtb.ChangeSectionPageSize(new Size(826, 1160));
                    rtb.Document.SectionDefaultPageSize = new Size(826, 1160);
                    rtb.ShowComments = false;
                    rtb.Commands.ChangeSectionFooterBottomMarginCommand.Execute(0);
                    rtb.ChangeSectionFooterBottomMargin(0);
                    rtb.Print("MyDocument", Telerik.Windows.Documents.UI.PrintMode.Native);
                    isPrintStarted = true;
                    window.Close();
                };
                rtb.PrintCompleted += (s, e) =>
                    {
                        parent.Children.Remove(rtb);
                        isPrintStarted = false;
                    };
                window.Closed += (s, e) =>
                    {
                        if (!isPrintStarted)
                        {
                            parent.Children.Remove(rtb);
                        }
                        else
                        {
                            //wait print complete to remove the children
                            ;
                        }
                    };
                g.Children.Add(b);
                Grid.SetRow(b, 0);
                Grid.SetColumn(b, 0);
                //Button b2 = new Button();
                //b2.Content = "Preview";
                //b2.Click += (s, e) =>
                //{
                //    isExportStarted = true;
                //    Export(grid);               
                //    window.Close();
                //};
                //grid.ElementExported += (s, e) =>
                //    {
                //        parent.Children.Remove(rtb);
                //        isExportStarted = false;
                //    };
                //g.Children.Add(b2);
                //Grid.SetRow(b2, 0);
                //Grid.SetColumn(b2, 1);
                window.Content = g;
                window.Height = 110;
                window.Width = 250;
                window.Header = "Print";
                window.WindowStartupLocation = Telerik.Windows.Controls.WindowStartupLocation.CenterScreen;
                window.ShowDialog();
            }
     
            private RadDocument CreateDocument(RadGridView grid)
            {
                List<GridViewBoundColumnBase> columns = (from c in grid.Columns.OfType<GridViewBoundColumnBase>()
                                                         orderby c.DisplayIndex
                                                         select c).ToList();
     
                Telerik.Windows.Documents.Model.Table table = new Telerik.Windows.Documents.Model.Table();
     
                RadDocument document = new RadDocument();
                Telerik.Windows.Documents.Model.Section section = new Telerik.Windows.Documents.Model.Section();
                section.Blocks.Add(table);
                document.Sections.Add(section);
     
                if (grid.ShowColumnHeaders)
                {
                    Telerik.Windows.Documents.Model.TableRow headerRow = new Telerik.Windows.Documents.Model.TableRow();
     
                    if (grid.GroupDescriptors.Count > 0)
                    {
                        Telerik.Windows.Documents.Model.TableCell indentCell = new Telerik.Windows.Documents.Model.TableCell();
                        indentCell.PreferredWidth = new TableWidthUnit(grid.GroupDescriptors.Count * 20);
                        indentCell.Background = HeaderBackground;
                        headerRow.Cells.Add(indentCell);
                    }
     
                    for (int i = 0; i < columns.Count; i++)
                    {
                        Telerik.Windows.Documents.Model.TableCell cell = new Telerik.Windows.Documents.Model.TableCell();
                        cell.Background = HeaderBackground;
                        if (columns[i].Header is string)
                            AddCellValue(cell, columns[i].Header.ToString());
                        else
                            AddCellValue(cell, columns[i].UniqueName);
                        //cell.PreferredWidth = new TableWidthUnit((float)columns[i].ActualWidth);
                        TableWidthUnit t = new TableWidthUnit(TableWidthUnitType.Auto);
                        cell.PreferredWidth = t;
                        headerRow.Cells.Add(cell);
                    }
     
                    table.Rows.Add(headerRow);
                }
     
                if (grid.Items.Groups != null)
                {
                    for (int i = 0; i < grid.Items.Groups.Count; i++)
                    {
                        AddGroupRow(table, grid.Items.Groups[i] as QueryableCollectionViewGroup, columns, grid);
                    }
                }
                else
                {
                    AddDataRows(table, grid.Items, columns, grid);
                }
     
                foreach (GridViewBoundColumnBase b in columns)
                {
                    TableWidthUnit unit = new TableWidthUnit(TableWidthUnitType.Auto);
                    table.SetGridColumnWidth(b.DisplayIndex, unit);
                }
                return document;
            }
     
            private void AddDataRows(Telerik.Windows.Documents.Model.Table table, IList items, IList<GridViewBoundColumnBase> columns, RadGridView grid)
            {
                for (int i = 0; i < items.Count; i++)
                {
                    Telerik.Windows.Documents.Model.TableRow row = new Telerik.Windows.Documents.Model.TableRow();
     
                    if (grid.GroupDescriptors.Count > 0)
                    {
                        Telerik.Windows.Documents.Model.TableCell indentCell = new Telerik.Windows.Documents.Model.TableCell();
                        indentCell.PreferredWidth = new TableWidthUnit(grid.GroupDescriptors.Count * 20);
                        indentCell.Background = RowBackground;
                        row.Cells.Add(indentCell);
                    }
     
                    for (int j = 0; j < columns.Count; j++)
                    {
                        object value = columns[j].GetValueForItem(items[i]);
                        if (value is string || value is int || value is double || value is double? || value is int?)
                        {
                            Telerik.Windows.Documents.Model.TableCell cell = new Telerik.Windows.Documents.Model.TableCell();
                            AddCellValue(cell, value != null ? value.ToString() : string.Empty);
                            cell.PreferredWidth = new TableWidthUnit((float)columns[j].ActualWidth);
                            cell.Background = RowBackground;
     
                            row.Cells.Add(cell);
                        }
                        else
                        {
                            Telerik.Windows.Documents.Model.TableCell cell = new Telerik.Windows.Documents.Model.TableCell();
                            AddCellValue(cell, value != null ? "/" : string.Empty);
                            cell.PreferredWidth = new TableWidthUnit((float)columns[j].ActualWidth);
                            cell.Background = RowBackground;
     
                            row.Cells.Add(cell);
                        }
                    }
     
                    table.Rows.Add(row);
                }
            }
     
            private void AddGroupRow(Telerik.Windows.Documents.Model.Table table, QueryableCollectionViewGroup group, IList<GridViewBoundColumnBase> columns, RadGridView grid)
            {
                Telerik.Windows.Documents.Model.TableRow row = new Telerik.Windows.Documents.Model.TableRow();
     
                int level = GetGroupLevel(group);
                if (level > 0)
                {
                    Telerik.Windows.Documents.Model.TableCell cell = new Telerik.Windows.Documents.Model.TableCell();
                    cell.PreferredWidth = new TableWidthUnit(level * 20);
                    cell.Background = GroupHeaderBackground;
                    row.Cells.Add(cell);
                }
     
                Telerik.Windows.Documents.Model.TableCell aggregatesCell = new Telerik.Windows.Documents.Model.TableCell();
                aggregatesCell.Background = GroupHeaderBackground;
                aggregatesCell.ColumnSpan = columns.Count + (grid.GroupDescriptors.Count > 0 ? 1 : 0) - (level > 0 ? 1 : 0);
     
                AddCellValue(aggregatesCell, group.Key != null ? group.Key.ToString() : string.Empty);
     
                foreach (AggregateResult result in group.AggregateResults)
                {
                    AddCellValue(aggregatesCell, result.FormattedValue != null ? result.FormattedValue.ToString() : string.Empty);
                }
     
                row.Cells.Add(aggregatesCell);
     
                table.Rows.Add(row);
     
                if (group.HasSubgroups)
                {
                    foreach (var g in group.Subgroups)
                    {
                        AddGroupRow(table, g as QueryableCollectionViewGroup, columns, grid);
                    }
                }
                else
                {
                    AddDataRows(table, group.Items, columns, grid);
                }
            }
     
            private void AddCellValue(Telerik.Windows.Documents.Model.TableCell cell, string value)
            {
                Telerik.Windows.Documents.Model.Paragraph paragraph = new Telerik.Windows.Documents.Model.Paragraph();
                cell.Blocks.Add(paragraph);
     
                Telerik.Windows.Documents.Model.Span span = new Telerik.Windows.Documents.Model.Span();
                if (value == null || value == string.Empty)
                    value = "/";
     
                span.Text = value;
     
                paragraph.Inlines.Add(span);
            }
     
            private int GetGroupLevel(IGroup group)
            {
                int level = 0;
     
                IGroup parent = group.ParentGroup;
     
                while (parent != null)
                {
                    level++;
                    parent = parent.ParentGroup;
                }
     
                return level;
            }
     
            #region INotifyPropertyChanged Members
     
            public event PropertyChangedEventHandler PropertyChanged;
     
            #endregion
        }
    }

    I am waiting for your reply.
    thank you
    Amit

Back to Top