PDA

View Full Version : سوال: مشکل در پرینت گرفتن از دیتاگرید



daneshmand1
سه شنبه 03 آبان 1390, 08:23 صبح
سلام
من برای پرینت گرفتن از اطلاعات دیتاگرید از کد زیر استفاده می کنم ولی فقط از ردیف 0 تا 43 گرید پرینت می گیره و در صفحه دوم دوباره همین ردیف ها رو تکراری میاره، مشکل این کد کجاست؟


private void button2_Click_1(object sender, EventArgs e)
{
if (printDialog1.ShowDialog() != DialogResult.Cancel)
{
curRow = 0;
this.printDocument1.Print();
}
}


private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
// A4: 827 * 1169
int ii = datagrid1.RowCount - 1;
SolidBrush b = new SolidBrush(Color.Black);
Font f = new Font("tahoma", 5);
int i = 0;
Font fheather = new Font("tahoma", 14);
e.Graphics.DrawString("نام", fheather, b, 600, 0);
e.Graphics.DrawString("نام خانوادگی", f, b, 750, 50 + i * 25);
int x = i + 1;
if (ii != 0)
{
while (i < ii)
{
e.Graphics.DrawString(dgvtahghigh.Rows[i].Cells[0].Value.ToString(), f, b, 750, 50 + x * 25);
e.Graphics.DrawString(dgvtahghigh.Rows[i].Cells[1].Value.ToString(), f, b, 700, 50 + x * 25);
i++;
x++;
curRow++;
}
e.HasMorePages = curRow < dgvtahghigh.Rows.Count;
}
{

Mahmoud Zaad
سه شنبه 03 آبان 1390, 09:16 صبح
سلام
کدهات بهم ریخته شده معلوم نیست چیه ولی می تونی از این کلاس استفاده کنی مشکلی هم نداره

اینم یه مثال ساده:
this.Cursor = Cursors.WaitCursor;
DataGridViewPrinter.DGVPrinter printer = new DataGridViewPrinter.DGVPrinter();
printer.CellAlignment = StringAlignment.Center;
printer.CellFormatFlags = StringFormatFlags.DirectionRightToLeft;
printer.HeaderCellAlignment = StringAlignment.Center;
printer.HeaderCellFormatFlags = StringFormatFlags.DirectionRightToLeft;
printer.PageNumberAlignment = StringAlignment.Near;
printer.PageNumberInHeader = true;
printer.PageNumberOnSeparateLine = true;
printer.PageNumbers = true;
printer.PorportionalColumns = true;
printer.Title = " ";
printer.TitleAlignment = StringAlignment.Center;
printer.TitleColor = Color.Blue;
printer.TitleFont = new Font("Arial", 14);
printer.TitleFormatFlags = StringFormatFlags.DirectionRightToLeft;
printer.SubTitle = " ";
printer.SubTitleAlignment = StringAlignment.Center;
printer.SubTitleColor = Color.Blue;
printer.SubTitleFont = new Font("Arial", 14);
printer.SubTitleFormatFlags = StringFormatFlags.DirectionRightToLeft;
//printer.Footer = "Footer";
//printer.FooterAlignment = StringAlignment.Center;
//printer.FooterColor = Color.Blue;
//printer.FooterFont = new Font("Arial", 14);
//printer.FooterFormatFlags = StringFormatFlags.DirectionRightToLeft;
//printer.FooterSpacing = 10;
printer.PrintPreviewDataGridView(dataGridView1);
this.Cursor = Cursors.Default;