-1

I have a GridControl whose datasource is a DataTable. The DataTable has two columns and one of them contains Bitmap. The RowAutoHeight property of GridView is set to true and GridControl display fine in form. But if I use ReportGenerator to generate a report of the GridView and print it, the Bitmap in cell is very small in printing result, it seems that GridView.RowAutoHeight does not work when printing. I have tried assigning the RepositoryItemPictureEdit as an editor but it did't help.

enter image description here

enter image description here

    private void PrintButtonClick(object sender, EventArgs e)
    {
        ReportGenerationOptions options = new ReportGenerationOptions();
        options.AutoFitToPageWidth = DefaultBoolean.True;

        var report = ReportGenerator.GenerateReport(gridView1, options);
        report.ShowPreviewDialog();

    }

    public BarCode CreateQrCode(String text, float sizeInMm)
    {
        BarCode barCode = new BarCode();
        barCode.Symbology = Symbology.QRCode;
        barCode.CodeText = text;
        barCode.BackColor = Color.White;
        barCode.ForeColor = Color.Black;
        barCode.RotationAngle = 0;
        barCode.CodeBinaryData = Encoding.Default.GetBytes(barCode.CodeText);
        barCode.Options.QRCode.CompactionMode = QRCodeCompactionMode.Byte;
        barCode.Options.QRCode.ErrorLevel = QRCodeErrorLevel.Q;
        barCode.Options.QRCode.Version = QRCodeVersion.AutoVersion;
        barCode.Options.QRCode.ShowCodeText = false;
        var g = this.CreateGraphics();
        barCode.DpiX = g.DpiX;
        barCode.DpiY = g.DpiY;
        barCode.Module = 1;
        barCode.Unit = GraphicsUnit.Millimeter;
        barCode.ImageHeight = sizeInMm;
        barCode.ImageWidth = sizeInMm;
        return barCode;
    }

    private void FormLoad(object sender, EventArgs e)
    {
        table.Columns.Add("Text", typeof(String));
        table.Columns.Add("QR Code", typeof(Image));
        gridControl1.DataSource = table;

        foreach (DataColumn tableColumn in table.Columns)
        {
            if (tableColumn.DataType == typeof(Image))
            {
                RepositoryItemPictureEdit pictureEdit = gridControl1.RepositoryItems.Add("PictureEdit") as RepositoryItemPictureEdit;
                pictureEdit.SizeMode = PictureSizeMode.Zoom;
                pictureEdit.NullText = " ";
                gridView1.Columns[tableColumn.ColumnName].ColumnEdit = pictureEdit;
                gridControl1.RepositoryItems.Add(pictureEdit);
            }
        }

        table.Rows.Add("foo", CreateQrCode("foo", 30).BarCodeImage);
        table.Rows.Add("bar", CreateQrCode("bar", 30).BarCodeImage);
    }
AlpacaMan
  • 465
  • 2
  • 7
  • 24
  • try this https://documentation.devexpress.com/WindowsForms/114724/Controls-and-Libraries/Data-Grid/Get-Started-With-Data-Grid-and-Views/Walkthroughs/Grid-View-Columns-Rows-and-Cells/Tutorial-Auto-Row-Height – Uddyan Semwal Aug 23 '19 at 06:57
  • @UddyanSemwal I have read that tutorial and tried setting RepositoryItemPictureEdit.CustomHeight to 220, but still didn't work. – AlpacaMan Aug 23 '19 at 08:02
  • may this help you or you can raise your question to dev express team: https://www.devexpress.com/Support/Center/Question/Details/T561768/gridcontrol-how-to-change-the-row-height-based-on-the-custom-draw-content – Uddyan Semwal Aug 23 '19 at 08:34
  • Try to set SizeMode to Clip: `pictureEdit.SizeMode = PictureSizeMode.Clip`; – Marko Juvančič Aug 23 '19 at 12:17

1 Answers1

1

From DevExpress Support Center I get solution: use

gridView1.ShowPrintPreview();

instead of

ReportGenerationOptions options = new ReportGenerationOptions();
options.AutoFitToPageWidth = DefaultBoolean.True;

var report = ReportGenerator.GenerateReport(gridView1, options);
report.ShowPreviewDialog();
AlpacaMan
  • 465
  • 2
  • 7
  • 24