PrintView without enoght space for all the columns

10 posts, 0 answers
  1. ShareDocs
    ShareDocs avatar
    76 posts
    Member since:
    Oct 2012

    Posted 12 Mar 2013 Link to this post

    Hi, I am trying to do a printview of a grid with 24 columns and they dont fit in the page event if I do it LandScape.
    What the printview is doing is just cuting the columns and just showing some of them. (see attach, you will see 11.5 columns)

    How can I do to organice the columns in differents pages (like 12 columns in 1 page and other 12 in other page, or how it fit better)

    This is my code

     public static void PrintPreview(RadGridView grdView, bool landscape, string header)
            {
                if (!CheckPrintingValidation(grdView)) return;  //this check that the gridView have data

                RadPrintDocument printDoc = new RadPrintDocument();
                printDoc.Landscape = landscape;
                printDoc.RightHeader = header;
                printDoc.HeaderHeight = 100;
                SetPrintStyle(grdView);
                grdView.PrintPreview(printDoc);
            }
  2. Ivan Petrov
    Admin
    Ivan Petrov avatar
    701 posts

    Posted 14 Mar 2013 Link to this post

    Hello Lior,

    Thank you for writing.

    Currently, RadGridView cannot be printed on two pages. We have a feature request logged in our Public Issue Tracking System - PITS. You can add your vote/comment to it on the following link - PITS Feature.

    To make the columns fit on the page you can set the FitWidthMode of the grid PrintStyle to FitPageWidth. This will size the grid so it would fit on the page. Here is an example:
    this.radGridView1.PrintStyle.FitWidthMode = PrintFitWidthMode.FitPageWidth;
    I hope this will be useful. Should you have further questions, I would be glad to help.

    Regards,
    Ivan Petrov
    the Telerik team
    WinForms Q1 2013 boasts PivotGrid, PDF Viewer, Chart enhancements and more. Check out all of the latest highlights.
  3. UI for WinForms is Visual Studio 2017 Ready
  4. ShareDocs
    ShareDocs avatar
    76 posts
    Member since:
    Oct 2012

    Posted 17 Mar 2013 Link to this post


    Thanks for your answer but this doesn't work, didn't see any change in the page.
    Also it should cut the table and put it in 2 pages, not shrink the columns until fit the page.
    24 columns in one page? the user wont be able to see anything

    just added my vote in the PITS but please try to give a solution as soon as possible! 

    thanks
  5. Ivan Petrov
    Admin
    Ivan Petrov avatar
    701 posts

    Posted 20 Mar 2013 Link to this post

    Hi Lior,

    Thank you for writing back.

    This is what RadGridView printing offers out of the box. Until this feature is implemented you can implement your own printing functionality. For this you will need an object that implements the IPrintable interface which to assign to a RadPrintDocument's AssociatedObject and which would handle the printing. This way you will be able to tailor a custom solution for your scenario that will best address the issues you have.

    Should you need assistance, do not hesitate to write back.

    Greetings,
    Ivan Petrov
    the Telerik team
    WinForms Q1 2013 boasts PivotGrid, PDF Viewer, Chart enhancements and more. Check out all of the latest highlights.
  6. ShareDocs
    ShareDocs avatar
    76 posts
    Member since:
    Oct 2012

    Posted 24 Mar 2013 Link to this post

    Ivan, thank for your answer

    Can you give me an example please?
    I am kind of new in C# world and Telerik.

    thanks
  7. Ivan Petrov
    Admin
    Ivan Petrov avatar
    701 posts

    Posted 27 Mar 2013 Link to this post

    Hello Lior,

    Thank you for your reply.

    We do not have a full example of printing the grid on two pages. I can give you the start point from which you can start and implement the printing yourself. However, this is not a trivial task by any means, if you are to succeed in the endeavor you will need deep knowledge of RadGridView. If you feel you can do this you have two options:
    1. To implement an IPrintable object which would traverse the grid and print its content.
    2. To implement custom GridPrintStyle and a custom GridPrintRenderer, extending the build in functionality.

    To get started on version 1 you need and object like this:
    public class GridPrinter : IPrintable
    {
        private RadGridView grid;
     
        public GridPrinter(RadGridView gridToPrint)
        {
            this.grid = gridToPrint;
        }
     
        int IPrintable.BeginPrint(RadPrintDocument sender, System.Drawing.Printing.PrintEventArgs args)
        {
            return 1; //Calculate and return the number of pages you will print
        }
     
        bool IPrintable.EndPrint(RadPrintDocument sender, System.Drawing.Printing.PrintEventArgs args)
        {
            return true;
        }
     
        System.Windows.Forms.Form IPrintable.GetSettingsDialog(RadPrintDocument document)
        {
            return null; //This is the dialog form shown when a user clicks on the options button in RadPrintPreviewDialog
        }
     
        bool IPrintable.PrintPage(int pageNumber, RadPrintDocument sender, System.Drawing.Printing.PrintPageEventArgs args)
        {
            //Print the page here
            return false;
        }
    }

    The second option is to inherit the print renderer used for the normal printing and extend it to print on two pages:
    public class MyPrintStyle : GridPrintStyle
    {
        public override int GetNumberOfPages(Rectangle drawArea)
        {
            return base.GetNumberOfPages(drawArea) * 2;
        }
     
        protected override BaseGridPrintRenderer InitializePrintRenderer(RadGridView grid)
        {
            if (this.PrintRenderer != null)
            {
                this.PrintRenderer.PrintCellPaint -= renderer_PrintCellPaint;
                this.PrintRenderer.PrintCellFormatting -= renderer_PrintCellFormatting;
            }
     
            MyGridPrintRenderer renderer = new MyGridPrintRenderer();
     
            renderer.PrintCellFormatting += renderer_PrintCellFormatting;
            renderer.PrintCellPaint += renderer_PrintCellPaint;
     
            return renderer;
        }
     
        private void renderer_PrintCellPaint(object sender, PrintCellPaintEventArgs e)
        {
            this.OnPrintCellPaint(sender, e);
        }
     
        private void renderer_PrintCellFormatting(object sender, PrintCellFormattingEventArgs e)
        {
            this.OnPrintCellFormatting(sender, e);
        }
    }
     
    public class MyGridPrintRenderer : TableViewDefinitionPrintRenderer
    {
        public override void DrawPage(PrintGridTraverser traverser, Rectangle drawArea, Graphics graphics, GridPrintSettings settings, int pageNumber)
        {
            //Using the traverser iterate over the grid and draw through the graphics object.
        }
     
        public override void Reset()
        {
            base.Reset();
            //Reset any helper variables
        }
    }

    When you have the above implemented you can use it by setting it to the grid PrintStyle property:
    this.radGridView1.PrintStyle = new MyPrintStyle();

    I hope this will help. Feel free to write back with further inquiries.

    All the best,
    Ivan Petrov
    the Telerik team
    WinForms Q1 2013 boasts PivotGrid, PDF Viewer, Chart enhancements and more. Check out all of the latest highlights.
  8. ShareDocs
    ShareDocs avatar
    76 posts
    Member since:
    Oct 2012

    Posted 16 Sep 2013 Link to this post

    Hi,
    Is there any news regarding this topic?

    (when printing a grid that is wider then a page)
  9. Ivan Petrov
    Admin
    Ivan Petrov avatar
    701 posts

    Posted 19 Sep 2013 Link to this post

    Hi Lior,

    Thank you for writing back.

    Currently, we are working on a multi-page printing support for RadGridView. We will do our best to include this feature in our next release. You can track the progress of the feature in our PITS by following the link I have posted previously.

    I hope this is useful. I would be glad to answer any further questions.

    Regards,
    Ivan Petrov
    Telerik
    TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WINFORMS.
    Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
    Sign up for Free application insights >>
  10. ShareDocs
    ShareDocs avatar
    76 posts
    Member since:
    Oct 2012

    Posted 30 Dec 2013 Link to this post

    HI,
    Did you make a solution for this?

    thanks
  11. Ivan Petrov
    Admin
    Ivan Petrov avatar
    701 posts

    Posted 30 Dec 2013 Link to this post

    Hello Lior,

    Thank you for your reply.

    The functionality is already implemented and was publicly released with our 2013 Q3 release. You can download the new version and test it out. You can read more on how to set it up in the second part of the following help article - GridPrintStyle.

    I hope this will help. Do not hesitate to write back with further questions.

    Regards,
    Ivan Petrov
    Telerik
    TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WINFORMS.
    Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
    Sign up for Free application insights >>
Back to Top
UI for WinForms is Visual Studio 2017 Ready