Home   Subscribe   Linkedin
  Archive Contact  

Printing in Silverlight

This is a simple example to print UI Element in Silverlight.Main idea in this approach is to pass the existing gridview itemsSource to another grid which is created at run time.Below is the Code where I have called my Utiltiy Class containing the methods to print .In my case I have used RadGridView

private void btnPrint_Click(object sender, RoutedEventArgs e)
        {
           
            var uf = new Utilities.Print.PrintCustomGrid();
            var grid = uf.CreateGridToPrint(RadGridViewBankBranch);
            if (grid.ItemsSource != null)
                uf.PrintAuditGrid(grid);
            else
            {
                MessageBox.Show("Empty Grid Cannot be Printed");
            }
           
        }

     public  RadGridView CreateGridToPrint(RadGridView uiGrid)
        {
            var gridToPrint = new RadGridView();
            gridToPrint.DataContext = uiGrid.DataContext;
            gridToPrint.ItemsSource = uiGrid.ItemsSource;
            gridToPrint.RowIndicatorVisibility = Visibility.Collapsed;
            gridToPrint.ShowGroupPanel = false;
            gridToPrint.IsFilteringAllowed = false;
            gridToPrint.AutoGenerateColumns = false;
            foreach (GridViewColumn column in       uiGrid.Columns.OfType<GridViewColumn>())
            {
                GridViewColumn newColumn = (GridViewColumn)Activator.CreateInstance(column.GetType());
                //gridToPrint.RowLoaded += GridViewReport_RowLoaded;
                newColumn.CopyPropertiesFrom(column);
                gridToPrint.Columns.Add(newColumn);
            }
            StyleManager.SetTheme(gridToPrint, StyleManager.GetTheme(uiGrid));
            gridToPrint.SortDescriptors.AddRange(uiGrid.SortDescriptors);
            gridToPrint.GroupDescriptors.AddRange(uiGrid.GroupDescriptors);
            gridToPrint.FilterDescriptors.AddRange(uiGrid.FilterDescriptors);
            return gridToPrint;
        }

        public void PrintAuditGrid(UIElement source)
        {
            var doc = new PrintDocument();
            //doc.DocumentName = documentName;

            var offsetY = 0d;
            var totalHeight = 0d;

            var canvas = new Canvas();
            canvas.Children.Add(source);

            doc.PrintPage += (s, e) =>
            {
                e.PageVisual = canvas;

                if (totalHeight == 0)
                {
                    totalHeight = source.DesiredSize.Height;
                }

                Canvas.SetTop(source, -offsetY);

                offsetY += e.PrintableArea.Height;

                e.HasMorePages = offsetY <= totalHeight;
            };
            doc.Print("Paywings" + Guid.NewGuid().ToString().Substring(1, 5));
        }
Posted by: Rishabh Toshniwal

Categories: C#, Silverlight, Telerik

Tags: ,

How to Close RadWindow on save and refreshing Particular page by javascript

on design part of page of rad window write this javascript code

Code Snippet
  1. <script type="text/javascript">
  2.  
  3.         function CloseAndRedirect(sender, args) {
  4.             GetRadWindow().BrowserWindow.location.href = 'welcomePage.aspx';        //Redirect to new url
  5.             GetRadWindow().close();       //closes the window       
  6.         }
  7.         function GetRadWindow()   //Get reference to window    
  8.         {
  9.             var oWindow = null;
  10.             if (window.radWindow)
  11.                 oWindow = window.radWindow;
  12.             else if (window.frameElement.radWindow)
  13.                 oWindow = window.frameElement.radWindow;
  14.             return oWindow;
  15.         }
  16. </script>

on save button click

Code Snippet
  1. protected void btnSave_onClick(object sender, EventArgs e)
  2.    {
  3.      string script = "<script language='javascript' type='text/javascript'>Sys.Application.add_load(CloseAndRedirect);</script>";
  4.      Page.ClientScript.RegisterStartupScript(this.GetType(), "Close", script);  
  5.    }
Posted by: ritesh.kumar

Categories: Javascript, ASP.NET, Telerik

Tags: