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.