如何解决使用C#PrintDocuments从SqlServer数据库打印多个页面
我有一个数据库表,其中包含300多个记录,我想使用PrintDocument / PrintPreview打印它,但问题是printPreview中仅显示一页,其余记录丢失了,我的代码在下面,请帮帮我。
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 Point(valueXPos+20,valueYPos));
valueYPos +=20;
}
}
private void button1_Click(object sender,EventArgs e)
{
PrintPreviewDialog pPD = new PrintPreviewDialog();
pPD.Document = printDocument1;
pPD.ShowDialog();
}
解决方法
有关打印预览对话框,请参见以下答案Showing Print Preview in C#
首先,您无法访问类似的数据,因为它会在尝试打印每页时尝试访问数据。
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++;
}
希望解决了您的问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。