PDA

View Full Version : بهینه سازی datagridview در print



m.sepidar
دوشنبه 11 شهریور 1387, 11:03 صبح
سلام دوستان
من از datagridview به کمک printDocument پرینت می گیرم ولی جدول datagridview توی پرینت کوچیک در میاد..در واقع عرضش خیلی کمه..همینطور با اینکه اطلاعاتم تو datagrideview چپ چینند ولی توی پرینت راست چین در میان...
خلاصه ظاهرش خیلی بی ریخته
اگه کسی اطلاعاتی داره از کمکش ممنون میشم

ffaariidd
دوشنبه 11 شهریور 1387, 21:07 عصر
سلام دوست عزیز. احتمالاً از کلاس DataGridViewPrint.cs استفاده کردی.
این کلاس یک کلاس انگلیسیه و کلاً از چپ به راسته ولی من با یکم تغییرات تونستم یکم بهترش کنم ولی کار بهینه و خوبی نبود ولی کار منو راه انداخت.
این کلاس رو براتون ضمیمه کردم.
فقط اگه میخوای فونتش درست بشه توی کد برنامت قسمت های که میزارم رو ویرایش کن :

private void btnReport_Click(object sender, EventArgs e)
{
if (SetupThePrinting())
{
PrintPreviewDialog MyPrintPreviewDialog = new PrintPreviewDialog();
MyPrintPreviewDialog.Document = MyPrintDocument;
MyPrintPreviewDialog.ShowDialog();
dataGridView1.Font = MyDataGridViewPrinter.FirstTheTitleFont;
}
}

این کد برای رویداد دکمه پرینت و





private void MyPrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
bool more = MyDataGridViewPrinter.DrawDataGridView(e.Graphics) ;
if (more == true)
e.HasMorePages = true;
}



private bool SetupThePrinting()
{
PrintDialog MyPrintDialog = new PrintDialog();
MyPrintDialog.AllowCurrentPage = false;
MyPrintDialog.AllowPrintToFile = false;
MyPrintDialog.AllowSelection = false;
MyPrintDialog.AllowSomePages = false;
MyPrintDialog.PrintToFile = false;
MyPrintDialog.ShowHelp = false;
MyPrintDialog.ShowNetwork = false;
if (MyPrintDialog.ShowDialog() != DialogResult.OK)
return false;
MyPrintDocument.DocumentName = "Customers Report";
MyPrintDocument.PrinterSettings = MyPrintDialog.PrinterSettings;
MyPrintDocument.DefaultPageSettings = MyPrintDialog.PrinterSettings.DefaultPageSettings;
MyPrintDocument.DefaultPageSettings.Margins = new Margins(40, 40, 40, 40);
if (MessageBox.Show("Do you want the report to be centered on the page", "InvoiceManager - Center on Page", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
MyDataGridViewPrinter = new DataGridViewPrinter(dataGridView1, MyPrintDocument, true, true, "گزارشگیری سریع", new Font("Tahoma", 13, FontStyle.Bold, GraphicsUnit.Point), Color.Black, true);
else
MyDataGridViewPrinter = new DataGridViewPrinter(dataGridView1, MyPrintDocument, false, true, "گزارش گیری سریع", new Font("Tahoma", 13, FontStyle.Bold, GraphicsUnit.Point), Color.Black, true);
return true;
}

در هر صورت اگه بدردتون خورد بگید و اگه مشکلی بود بگید تا درستش کنم.

چون ضمیمه نشد آپلود کردم


http://farid.parsaspace.com/DataGridViewPrinter.zip

mojtaba_fars
چهارشنبه 21 اردیبهشت 1390, 18:33 عصر
سلام بچه ها یه کمکی میخواستم اگه لطف کنین ممنون می شم من توی دیتا گریدم ترتیب ستونها اینجوریه "نام ، نام خانوادگی ، نام پدر ،مسئولیت ، تحصیلات ، تاریخ استعلام "

برای پرینت از PrintDocument استفاده کردم اما زمانی که پرینت پرویو رو می بینم ترتیب ستون ها برعکس شده "تاریخ استعلام ، تحصیلات ، مسئولیت ، نام پدر ، نام خانوادگی ، نام " نمایش داده میشه دوستان اگه راه حلی دارید ارائه بدین

taraneh_66
دوشنبه 21 بهمن 1392, 13:57 عصر
با سلام
استفاده از کلاس DataGridViewPrint.cs باعث می شه اندازه محتوای سلولها به اندازه محتوای سلولهای هدر همان ستون در بیاد چی کاری میشه کرد که اندازه هر سلول وابسته به هدرش نشه؟