MukulMohal Ответов: 1

Проблема при печати данных gridview


Привет, я пытаюсь распечатать datagridview с помощью диалогового окна печати. он прекрасно работает, когда данные заполняются в сетке. но если я напечатаю datagrid без использования данных datagrid, то они исчезнут. точно так же, если я загружаю данные в сетку, она не показывает мне мою сетку. но расчеты выполнены идеально.

[опубликовано в качестве решения OP]
Цитата:
единственное решение, которое я нашел, чтобы ограничить возникновение проблемы, - это проверка наличия какой-либо строки в сетке. затем распечатайте всплывающее сообщение else с просьбой сначала заполнить сетку. есть ли какое-либо другое решение, кроме этого, пожалуйста, дайте мне знать.


Что я уже пробовал:

это код, который я использую для печати datagridview
Bitmap bitmap;
        private void btnPrint_Click(object sender, EventArgs e)
        {
            try
            {
                int height = grdSpanSale.Height;
                grdSpanSale.Height = grdSpanSale.RowCount * grdSpanSale.RowTemplate.Height;

                //Create a Bitmap and draw the DataGridView on it.
                bitmap = new Bitmap(this.grdSpanSale.Width, this.grdSpanSale.Height);
                grdSpanSale.DrawToBitmap(bitmap, new Rectangle(0, 0, this.grdSpanSale.Width, this.grdSpanSale.Height));

                //Resize DataGridView back to original height.
                grdSpanSale.Height = height;

                //Show the Print Preview Dialog.
                printPreviewDialog1.Document = printDocument1;
                printPreviewDialog1.PrintPreviewControl.Zoom = 1;
                printPreviewDialog1.ShowDialog();
            }
            catch/*(Exception exec)*/
            {
                fromTOdate();
                //MessageBox.Show(exec.ToString());
            }
        }
        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            e.Graphics.DrawImage(bitmap, 0, 0);
        }

1 Ответов

Рейтинг:
0

Gerry Schmitz

Вы "пересчитываете" высоту сетки на основе "количества строк"; и вы "бросаете" фактическую высоту сетки. Результат должен быть очевиден. Выберите высоту для использования в качестве "константы", если есть "нулевые" строки вместо "нулевой высоты".

int height = grdSpanSale.Height;
grdSpanSale.Height = grdSpanSale.RowCount * grdSpanSale.RowTemplate.Height;

//Create a Bitmap and draw the DataGridView on it.
bitmap = new Bitmap(this.grdSpanSale.Width, this.grdSpanSale.Height);