简体   繁体   中英

Print Multiple Pages from SqlServer Database using C# PrintDocuments

i have a database table having more then 300 records i want to print it using PrintDocument/PrintPreview but the problem is only one page is showing in printPreview the remaining records are missing my Code is below please help me.

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
         int valueYPos=80;
         int valueXPos=20
         string classId=1;
            con.SqlQuery("select [RollNo],[Name] from [dbo].[StudentRegistration] where [ClassId]='" 
            + classId + "'");
            con.ExQuery();
            foreach (DataRow item in con.ExQuery().Rows)
            {
                e.Graphics.DrawString("RollNo" +item[0].ToString(), new Font("Arial", 20, 
                        FontStyle.Bold), Brushes.Black, new Point(valueXPos, valueYPos));
                e.Graphics.DrawString("RollNo" +item[1].ToString(), new Font("Arial", 20, 
                     FontStyle.Bold), Brushes.Black, new Point(valueXPos+20, valueYPos));
                valueYPos +=20;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            PrintPreviewDialog pPD = new PrintPreviewDialog();
            pPD.Document = printDocument1;
            pPD.ShowDialog();
        }

For print preview dialog see this answer Showing Print Preview in C#

First of all you can not access data like that because it will try to access data when it try to print each page.

            private int pageNo = 1;

            private static void Print_Invoice(object sender, PrintPageEventArgs e)
            {
                int valueYPos=80;
                int valueXPos=20
                string classId=1;
                con.SqlQuery("select [RollNo],[Name] from [dbo].[StudentRegistration] where [ClassId]='"+ classId + "'");
                con.ExQuery();

                switch (pageNo)
                {
                    case 1:
                        //Print some Data
                        e.HasMorePages = true;
                        break;
                    case 2:
                       //Print some Data
                       e.HasMorePages = true;
                       break;
                    case 3:
                       //Print some Data
                       e.HasMorePages = false;
                       break;
                    default:
                       e.HasMorePages = false;
                       break;
                }

                pageNo++;
                
            }

Hope resolved your problem

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM