Question

Currently my printed file from database on transaction summary looks like this:

enter image description here

As you can see at the above image, the texts on the description column not being fully read by system, because not enough space to read all of it, so the system cut the texts as necessary. This is my database look like on printed file from database on database summary:

enter image description here

My question is: How do i make the description column more bigger and longer, so that the text on it can be fully readable or how do i make the others column to be fitted as we type the text on it?

Example: The Quantity column has more longer and bigger column, i want the quantity column is fit on the right side and the left side of the number "10".

Any help? Thank you

Edited: Sorry, forgot to copy paste the code that i am using for this system :p

This is the code that i am using for print file:

private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
        {
            try
            {
                //Set the left margin
                int iLeftMargin = e.MarginBounds.Left;

                //Set the top margin
                int iTopMargin = e.MarginBounds.Top;

                //Whether more pages have to print or not
                bool bMorePagesToPrint = false;

                int iTmpWidth = 0;

                int width = 500;

                int height = 90;

                //For the first page to print set the cell width and header height
                if (bFirstPage)
                {
                    foreach (DataGridViewColumn GridCol in dataGridView1.Columns)
                    {
                        iTmpWidth = (int)(Math.Floor((double)((double)GridCol.Width / (double)iTotalWidth * (double)iTotalWidth * ((double)e.MarginBounds.Width / (double)iTotalWidth))));

                        iHeaderHeight = (int)(e.Graphics.MeasureString(GridCol.HeaderText, GridCol.InheritedStyle.Font, iTmpWidth).Height) + 11;

                        // Save width and height of headres
                        arrColumnLefts.Add(iLeftMargin);
                        arrColumnWidths.Add(iTmpWidth);
                        iLeftMargin += iTmpWidth;
                    }
                }

                //Loop till all the grid rows not get printed
                while (iRow <= dataGridView1.Rows.Count - 1)
                {
                    DataGridViewRow GridRow = dataGridView1.Rows[iRow];

                    //Set the cell height
                    iCellHeight = GridRow.Height + 5;

                    int iCount = 0;

                    //Check whether the current page settings allo more rows to print
                    if (iTopMargin + iCellHeight >= e.MarginBounds.Height + e.MarginBounds.Top)
                    {
                        bNewPage = true;
                        bFirstPage = false;
                        bMorePagesToPrint = true;
                        break;
                    }

                    else
                    {
                        if (bNewPage)
                        {
                            //Draw Header
                            e.Graphics.DrawString("Database Summary", new Font(dataGridView1.Font, FontStyle.Bold), Brushes.Black, e.MarginBounds.Left, e.MarginBounds.Top - e.Graphics.MeasureString("Database Summary", new Font(dataGridView1.Font, FontStyle.Bold), e.MarginBounds.Width).Height - 13);

                            String strDate = DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToShortTimeString();

                            //Draw Date
                            e.Graphics.DrawString(strDate, new Font(dataGridView1.Font, FontStyle.Regular), Brushes.Black, e.MarginBounds.Left + (e.MarginBounds.Width - e.Graphics.MeasureString(strDate, new Font(dataGridView1.Font, FontStyle.Regular), e.MarginBounds.Width).Width), e.MarginBounds.Top - e.Graphics.MeasureString("Database Summary", new Font(new Font(dataGridView1.Font, FontStyle.Regular), FontStyle.Regular), e.MarginBounds.Width).Height - 13);

                            //Draw Image
                            e.Graphics.DrawImage(pb1.Image, new Rectangle(300, 0, width, height));

                            //Draw Columns    
                            iTopMargin = e.MarginBounds.Top;

                            foreach (DataGridViewColumn GridCol in dataGridView1.Columns)
                            {
                                e.Graphics.FillRectangle(new SolidBrush(Color.Aqua), new Rectangle((int)arrColumnLefts[iCount], iTopMargin, (int)arrColumnWidths[iCount], iHeaderHeight));

                                e.Graphics.DrawRectangle(Pens.Black, new Rectangle((int)arrColumnLefts[iCount], iTopMargin, (int)arrColumnWidths[iCount], iHeaderHeight));

                                e.Graphics.DrawString(GridCol.HeaderText, GridCol.InheritedStyle.Font, new SolidBrush(GridCol.InheritedStyle.ForeColor), new RectangleF((int)arrColumnLefts[iCount], iTopMargin, (int)arrColumnWidths[iCount], iHeaderHeight), strFormat);

                                iCount++;
                            }

                            bNewPage = false;
                            iTopMargin += iHeaderHeight;
                        }

                        iCount = 0;

                        //Draw Columns Contents                
                        foreach (DataGridViewCell Cel in GridRow.Cells)
                        {
                            if (Cel.Value != null)
                            {
                                e.Graphics.DrawString(Cel.Value.ToString(), Cel.InheritedStyle.Font, new SolidBrush(Cel.InheritedStyle.ForeColor = System.Drawing.Color.Blue), new RectangleF((int)arrColumnLefts[iCount], (float)iTopMargin, (int)arrColumnWidths[iCount], (float)iCellHeight), strFormat);

                                //Drawing Cells Borders 
                                e.Graphics.DrawRectangle(Pens.Red, new Rectangle((int)arrColumnLefts[iCount], iTopMargin, (int)arrColumnWidths[iCount], iCellHeight));

                                iCount++;
                            }
                        }
                    }

                    iRow++;
                    iTopMargin += iCellHeight;
                }

                //If more lines exist, print another page.
                if (bMorePagesToPrint)
                {
                    e.HasMorePages = true;
                }

                else
                {
                    e.HasMorePages = false;
                }
            }

            catch (Exception exc)
            {
                MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Was it helpful?

Solution

One option is to specify the width of each column:

dataGridView1.Columns["Quantity"].Width = 50;
dataGridView1.Columns["Description"].Width = 250;

Another option is to tell the DataGridView to auto-size all columns:

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

OTHER TIPS

You could always assign cssClass to your grid view and have it adjust automatically that way?

something simple like this is what I normally use:

        .Gridview 
    {
        border-collapse: collapse;
        width:100%;
    }
        .Gridview tr th
        {
            background-color: #3c454f;
            color: #ffffff;
            padding: 10px 5px 10px 5px;
            border: 1px solid #cccccc;
            font-family: 'Calibri';
            font-size: 15px;
            font-weight: normal;
            text-transform:capitalize;
        }
        /**/
        .Gridview tr:nth-child(2n+2)
        {
            background-color: #f3f4f5;
        }

        .Gridview tr:nth-child(2n+1) td
        {
            background-color: #d6dadf;
            color: #454545;
        }
        .Gridview tr td
        {
            padding: 5px 10px 5px 10px;
            color: #454545;
            font-family: Calibri;
            font-size: 12px;
            border: 1px solid #cccccc;
            vertical-align: middle;
        }

added bonus: Makes your gridview looks pretty cool too. :)

Hope it helps. Good luck.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top