# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ابزارهای گزارش سازی >  چگونگی چاپ اطلاعات موجود در دیتا گرید(فوری)

## iranigirl1364

با سلام:بعد از انتخاب کد کالا و زدن یک دکمه *تمامی فاکتور ها برای یک کالا در دیتا گرید*  نمایان  می شود.چگونه می توان بعد از زدن *دکمه چاپ ,اطلاعات* *موجود در دیتا گرید چاپ شوند؟*(*نمی خواهم از کریستال ریپورت استفاده کنم*)لطفا مرا راهنمایی کنید.با تشکر و احترام فراوان

----------


## asd_moghadas

سلام 
از رپورت به جای کریستال رپورت استفاده کن وبعد از گرفتن idهررکورد ان رکورد را چاپ کن البته اگه منظورت چاپ تک تک رکورد ها باشه 
موفق باشی

----------


## NewFoxStudent

ببین این بدردت میخوره
منبعش هم سایت CodeProject
DGVPrinter.rar

----------


## iranigirl1364

با سلام مجدد:
دوست گرامی من وقت زیادی ندارم تا روی کلاس  DGVPrinter  پیشنهادی شما کار کنم.لطفا در مورد این کلاس به سوالات من توضیح دهید و مرا راهنمایی کنید:


*1- این کلاس چه کاربردی دارد؟*

*2-از این کلاس چگونه و در کجا باید استفاده کنم تا تمام اطلاعات موجود در دیتا گرید چاپ شوند؟*

*3-اطلاعات موجود در دیتا گرید در این کلاس در چه ابزاری چاپ می شود؟*

با تشکر و احترام فراوان

----------


## NewFoxStudent

1- برای چاپ اطلاعات یک DataGridView به کار میره
2-توی فرمی که گریدت هست یه دکمه چاپ میزاری و کد به صورت زیر ازش استفاده میکنی
3-در PrintPreviewControl


DGVPrinterHelper.DGVPrinter clsPrint = new DGVPrinterHelper.DGVPrinter();
            clsPrint.PrintDataGridView(DataGridView)

برای تنظیمات هم یه سری پروپرتی هست که از اسمشون پیداست چه کاری میکنن

----------


## NewFoxStudent

PrintDataGridView_src_CS.zip

این کلاس هم بد نیست 
امکانات بیشتری داره

اینم منبعش CodeProject ولی لینکش رو پیدا نکردم

----------


## iranigirl1364

با سلام:
من این کلاس را به پروژه ام اضافه کردم و کنترل PrintPreviewControl و یک دکمه هم به فرم مورد نظر اضافه کردم و در رویداد کلیک دکمه هم, کد مورد نظر را به صورت زیر نوسشتم:
*(privatevoid button1_Click_1(object sender, EventArgs** e* 
*}*
*;()DGVPrinterHelper.**DGVPrinter clsPrint = new DGVPrinterHelper.DGVPrinter*
*;(clsPrint.PrintDataGridView(dataGridView1*
*{*
 
اما در دو تابع کلاس به صورت زیر ERROR وجود دارد روی قسمت get هر دو تابع:

publicForm Owner
}
{}set
*{}get*
{
publicDouble PrintPreviewZoom
}
{}set 
*{}get* 

{
این دو ERROR را میدهد:
Error 1 'DGVPrinterHelper.DGVPrinter.Owner.get': not all code paths return a value E:\diba-store\SOURCE\DIBA3\DIBA3\Class\DGVPrinter.cs 109 12 DIBA3 
Error 2 'DGVPrinterHelper.DGVPrinter.PrintPreviewZoom.get'  : not all code paths return a value E:\diba-store\SOURCE\DIBA3\DIBA3\Class\DGVPrinter.cs 120 13 DIBA3 
لطفا مرا راهنمایی کنید
با تشکر و احترام فراوان

----------


## NewFoxStudent

نیازی به اضافه کردن PrintPreviewControl نیست 
این کنترل رو حذف کنید و دوباره تست کنید
لطفا نمونه کدهاتون رو هم داخل تگ کد بنویسید تا خوندنش راحت باشه
این تگ کد

----------


## iranigirl1364

*با سلام مجدد:*
*من کنترل PrintPreviewControl را از روی فرم مورد نظر برداشتم و مجددا تست کردم و باز هم در قسمت  get دو تابع Owner و PrintPreviewZoom در کلاس DGVPrinterHelper همان ERROR هایی که در پست قبل بیان کردم ,مواجه شدم.*
*لطفا مرا راهنمایی کنید.*
*با تشکر و احترام فراوان*

----------


## NewFoxStudent

> *با سلام مجدد:*
> *من کنترل PrintPreviewControl را از روی فرم مورد نظر برداشتم و مجددا تست کردم و باز هم در قسمت  get دو تابع Owner و PrintPreviewZoom در کلاس DGVPrinterHelper همان ERROR هایی که در پست قبل بیان کردم ,مواجه شدم.*
> *لطفا مرا راهنمایی کنید.*
> *با تشکر و احترام فراوان*


این دو پروپرتی رو به صورت زیر تغییر بدید

public Form Owner
        { get; set; }

 public Double PrintPreviewZoom
        { get; set; }
احتمالا درست بشه

----------


## asefy2008

سلام NewFoxStudent این کلاس هایی که معرفی کردین در قیاس با کریستال چه طوره ؟( کدومشون بهتره .)

----------


## NewFoxStudent

سلام دوست عزیز 
استفاده از کریستال ریپورت برای چاپ اطلاعات ( و نه گزارشگیری) از لحاظ زمانی هزینه بیشتری میبره در حالی که نتیجش در قیاس با این کلاسها چندان تفاوتی نداره
بنابراین من همیشه برای چاپ اطلاعات به صورت سریع از این کلاسها استفاده میکنم ولی برای ایجاد گزارشهای شرطی و پیچیده تر از همون کریستال ریپورت استفاده میکنم
به عنوان مثال من توی فرمهایی که رکوردهای بانک رو نمایش میدن همیشه دکمه چاپ میزارم و کاربر میتونه با استفاده از اون تمام رکوردهای در حال نمایش رو چاپ کنه برای این کار از همین کلاسها استفاده میکنم

----------


## iranigirl1364

با سلام مجدد و تشکر از راهنمایی شما دوست گرامی با آی دی NewFoxStudent:
مشکل تابع get  را با برگرداندن یک مقدار حل کردم و اطلاعات موجود در دیتا گرید نیز چاپ شدند و به جواب رسید.
اما یک *سوال مهم*  دیگر دارم در مورد این کلاس, *لطفا مرا راهنمایی کنید*:
*من در 4 تا Textbox   چهار مقدار دارم که به ترتیب عبارتند از  کد کالا ,نام کالا, موجودی اولیه کالا و موجودی فعلی کالا , که این مقادیر در زمان اجرا با توجه به انتخاب کالای مورد نظر توسط انتخاب کاربر  در 4 Textbox پر می شوند و در زیر آن هم همان دیتا گرید که قبلا بیان کردم وجود دارد و من می خواهم این 4 مقدار هم در بالای گزارش چاپ شده از دیتا گرید نمایش داده شود, چگونه می توانم این 4 مقادیر را هم بالای گزارشم نمایش دهم و چاپ کنم؟*
با تشکر و احترام فراوان

----------


## NewFoxStudent

باید توی تابعی که کار چاپ رو انجام میده این کار رو انجام بدید
توی کد کلاس تابع مربوطه رو پیدا کنید و کدش رو به صورتی تغییر بدید که این چهار تا فیلد رو هم به ReportViewer پاس بده
متاسفانه الان فرصت نمیکنم اما میتونم برای آخر هفته این تغییرات رو براتون انجام بدم

----------


## iranigirl1364

با سلام مجدد:
من خودم هم روی این کلاس کار میکنم ,اما لطفا در مورد سوالم در پست قبلی (4 متغیر در 4 Textbox)  مرا راهنمایی کنید.
منتظر راهنمایی شما هستم
با تشکر و احترام فراوان

----------


## iranigirl1364

با سلام مجدد :
در این کلاس تابعی به نام Tilte به صورت زیر وجود دارد: 


       ///<summary>
       /// Title for this report. Default is empty.
       ///</summary>
       private String title;
       public String Title
       {
           get { return title; }
           set
           {
               title = value;
               if (docName == null)
               {
                   printDoc.DocumentName = value;
               }
           }

       }


*که فقط می توان مقدار آن را درکلاس DGVPrinter تعریف کرد و به آن یک مقدار String داد برای مثال :* 



 
public DGVPrinter ()  

           {

    title =  "به نا م خدا"
{ 

اما اگر من بخواهم مقادیر موجور در 4 تا TextBox را به صورت زیر به عنوان Title چاپ کنم با روش های متفاوت امتحان کردم اما به نتیجه نرسید:



public DGVPrinter ()  
            {title =  "کد کالا" + textBox1.Text + " " + "نام کالا" + textBox2.Text + " " + "موجودی اولیه" + textBox3.Text + " " + "موجودی فعلی" + textBox4.Text;
}



*برای مثال در تابع* *Tilte** مقدار متغیر* *title** را* *public* *به صورت زیر قرار دادم :*


        ///<summary>
        /// Title for this report. Default is empty.
        ///</summary>
*public** String title;*
        public String Title
        {
            get { return title; }
            set
            {
                title = value;
                if (docName == null)
                {
                    printDoc.DocumentName = value;
                }
            }
        }






*و سپس در فرم نمایش اطلاعات در رویداد کلیک دکمه به صورت زیر کد را تغییر دادم:*



        private void button1_Click_1(object sender, EventArgs e)
        {
            DGVPrinterHelper.DGVPrinter clsPrint = new         DGVPrinterHelper.DGVPrinter();               clsPrint.PrintDataGridView(dataGridView1);
            clsPrint.title = "کد کالا" + textBox1.Text + " " + "نام کالا" + textBox2.Text; + " " + "موجودی اولیه" + textBox3.Text + " " + "موجودی فعلی" + textBox4.Text;
        }


 

*اما جواب نمی دهد.*


*و هزاران روش دیگر که باز جواب نداد.*

*لطفا مرا ارهنمایی کنید*
*هر چه سریعتر مرا راهنمایی کنید.*
*با تشکر و احترام فراوان*

----------


## system32

سلام.

به نظر من با اینکه کدهایی که دوستان دادند خیلی عالیه ولی زیاد خودت را درگیر این کدها نکن و فقط از کد ساده زیر استفاده کن:

یک کنترل PrintPreviewDialog و یک کنترل PrintDocument به فرمت اضافه کن و یک Button حالا در باتن کد زیر را وارد کن:


printPreviewDialog1.ShowDialog();

و در رویداد printpage مربوط به printdocument کد زیر را وارد کن.

Bitmap bm = newBitmap(this.dataGridView1.Width, this.dataGridView1.Height);
this.dataGridView1.DrawToBitmap(bm, newRectangle(0, 0, this.dataGridView1.Width, this.dataGridView1.Height));
e.Graphics.DrawImage(bm, 0, 0);

حالا مقدار document مربوط به کنترل printpreviewdialog را به printdocument تغییر بدهید. و برنامه را اجرا کنید و ازش لذت ببرید.

امیدوارم موفق باشید.

----------


## iranigirl1364

*با سلام مجدد به همه:*
*دوست گرامی پیشنهاد شما را هم به ترتیب و با دقت انجام دادم اما  فقط یک PrintpriviewDocument نمایش داده می شود که در آن مقادیر دیتا گرید وجود دارد اما پرینتی گرفته نمی شود.*
*لطفا یک نفر به من کمک کنه*
*هر چه سریعتر به من کمک کنید.*
*با تشکر و احترام فراوان*

----------


## system32

دوست عزیز این پیش نمایش چاپه. بعد از دیدن پیش نمایش برای چاپ از بالای پنجره سمت چپ روی شکل چاپگر یا print کلیک کن حتما چاپ می شه.

یا اگه نخواستی دستور زیر را اجرا کن.


printDocument1.Print();

----------


## iranigirl1364

*با سلام:*
*تمامی مراحل را بارها و بارها انجام دادم ولی پرینت گرفته نمی شود.*
*به من کمک کنید*
*با تشکر و احترام فراوان*

----------


## Afshin160

فایل زیر خیلی می تونه کمک بکنه ....
شما براحتی می تونید از datagridview پرینت بگیرید...         
به راحتي ازش جواب گرفتم .
https://barnamenevis.org/attach...1&d=1208239430


https://barnamenevis.org/attachment.php?attachmentid=16281&d=1208239430

----------


## system32

سلام. من حتی یک برگه هم پرینت گرفتم و شد. اگه محتویات دیتاگیرید در پرینت پریویو نمایش داده می شه که حتما باید چاپ بشه. ولی اگه نمایش داده نمی شه بحث یه چیز دیگه است. حالا کدوم یک از موارد بالا رخ داده؟

----------


## iranigirl1364

با سلام مجدد  :ناراحت:  :
بگذارید من مشکلم رو یک بار دیگه مطرح کنم
من با کلاسی که دوست گرامی با آی دی NewFoxStudent مطرح کردند توانستم از محتویات دیتا گرید پرینت بگیرم ,مشکل دیگری که دارم این است که در من در بالای فرم مورد نظر 4 تا مقدار هم در 4 تا TextBox وجود دارد و در زیر این 4 مقدار دیتا گرید وجود دارد و می خواهم علاوه بر محتویات دیتا گرید , این 4 مقدار که به ترتیب عبارتند از : کد کالا, نام کالا ,موجودی, اولیه موجودی فعلی به همراه مقادیرشان در بالای گزارشم چاپ شوند .

*دوست گرامی با آی دی Afshin160 فایل شما مطمئنا خیلی مفید است اما من با VB کار نکردم و نیاز به #C دارم.*

*در مورد راهنمایی شما دوست گرامی با آی دی system32* *در مورد PrintPreviewDialog و PrintDocument محتویات دیتا گرید در* 
*PrintDocument نمایش داده می شود اما چاپ نمی شود به علاوه من نیاز دارم علاوه بر محتویات دیتا گرید 4 تا متغیر در 4 تا TextBox هم بالای گزارش چاپ شود.*

لطفا مرا هر چه سریعتر راهنمایی کنید. :ناراحت: 
با تشکر و احترام فراوان

----------


## iranigirl1364

با سلام:
کسی به سوال من جواب نمی ده؟ :ناراحت:  :ناراحت: 
لطفا کمک کنید :ناراحت: 
با تشکر ا احترام فراوان

----------


## iranigirl1364

با سلام:
از دوستا ن گرامی تقاضا دارم یم نفر  به سوالم جواب بده :ناراحت:  :ناراحت:  :ناراحت:  :ناراحت:  :ناراحت:  :ناراحت: .
با تشکر و احترام فراوان

----------


## system32

سلام

یه نمونه از سورس را با مراحلی که گفتم تهیه کنید و برام بزارید ببینم مشکلش کجاست آیا از سیستمتونه یا نه.

----------


## iranigirl1364

با سلام:
من یک نمونه برنامه آماده کردم تا در این قسمت ضمیمه کنم اما با خطا مواجه می شوم و برنامه با وجود اینکه حجم آن کم است ضمیمه نمی شود.من قبلا خدمتتون مشکل رو عرض کردم.
لطفا به من کمک کنید :ناراحت: 
بگذارید من مشکلم رو یک بار دیگه مطرح کنم
من با کلاسی که دوست گرامی با آی دی NewFoxStudent مطرح کردند توانستم از محتویات دیتا گرید پرینت بگیرم ,مشکل دیگری که دارم این است که در من در بالای فرم مورد نظر 4 تا مقدار هم در 4 تا TextBox وجود دارد و در زیر این 4 مقدار دیتا گرید وجود دارد و می خواهم علاوه بر محتویات دیتا گرید , این 4 مقدار که به ترتیب عبارتند از : کد کالا, نام کالا ,موجودی, اولیه موجودی فعلی به همراه مقادیرشان در بالای گزارشم چاپ شوند .

*در مورد راهنمایی شما دوست گرامی با آی دی system32* *در مورد PrintPreviewDialog و PrintDocument محتویات دیتا گرید در* 
*PrintDocument نمایش داده می شود اما چیزی چاپ نمی شود.*
* به علاوه من نیاز دارم علاوه بر محتویات دیتا گرید 4 تا متغیر در 4 تا TextBox هم بالای گزارش چاپ شود.*

لطفا مرا هر چه سریعتر راهنمایی کنید. :ناراحت:  :ناراحت:  :ناراحت:  :ناراحت: 
با تشکر و احترام فراوان

----------


## system32

چطور ضمیمه نمیشه شما باید چندتا شرط زیر را رعایت کنید:

1- مسیر اصلی را فشرده کنید (RAR یا ZIP)
2- حجمشون کمتر از 488 کیلو باشه.
3- تمومه.

----------


## abi_sarab

سلام!
آقا این که Right to left پرینت نمی کنه که!
ای بابا....

----------


## iranigirl1364

با سلام:
دوست گرامی من تمامی 3 مرحله برای ضمیمه انجام دادم اما با خطا مواجه شدم.

----------


## system32

برای تغییر موقعیتش در صفحه دو مقدار صفر را در متد زیر تغییر بده مثلا 100 بزار.


e.Graphics.DrawImage(bm, 0, 0);

----------


## iranigirl1364

*با سلام:*
*کسی به سوال من جواب نمی ده؟*
*4 تا متغیر توی 4 تا TextBox دارم و در زیر آن یک دیتا گرید دارم*
*چگونه این 4 تا متغیر و محتویات دیتا گرید را چاپ کنم؟؟؟؟؟؟؟؟؟؟؟؟؟*
*با تشکر و احترام فراوان*

----------


## iranigirl1364

*با سلام:*
*دوستان گرامی آیا هیچ راهی برای سوال من وجود ندارد؟*
*آیا هیچ راهی برای چاپ مقدار 4 متغیر در 4 TextBox و محتویات دیتا گرید موجود در یک فرم وجود ندارد؟*
*با تشکر و احترام فراوان*

----------


## mehrzad_ali

اول يه كنترل print document ميندازي رو صفحه بعد اين كد رو توي اون مينويسي
PaintEventArgs myPaintArgs = new PaintEventArgs(e.Graphics, new Rectangle(new Point(0, 0), this.Size));
   this.InvokePaint(dataGrid1, myPaintArgs);

اين كد رو هم توي دكمه مينويسي  printDocument1.Print();

----------


## Afshin160

سلام ...
دوست عزيز شما نبايد در رابطه با تبديل كد مشكلي داشته باشيد چون الان ديگه كلي سايت هستند كه كد C#‎ را بهvb تبديل ميكنند .!!!

مثلا": http://www.developerfusion.com/tools.../csharp-to-vb/

----------


## iranigirl1364

با سلام:
دوست گرامی با آی دی Afshin160 از راهنمایی شما بابت سایت برای تبدیل Vb به #C ممنونم
روی کلاس فرستاده شده توسط شما هم کار می کنم
امیدوارم جواب شواله منو بده و 4 تا متغیر در 4 تا TextBox و محتویات دیتا گرید موجود در یک فرم را چاپ کند
با تشکر و احترام فراوان

----------


## iranigirl1364

باسلام:
متاسفانه با وجود اینکه روی کلاس جدید هم کار کردم به جواب سوالم نرسیدم
لطفا یک نفر توی این سایت به سوال من جواب بده :ناراحت: 
*من چه طوری مقدار 4 تا متغیر در 4 تا TextBox و محتویات دیتا گرید در یک فرم را چاپ کنم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟  ؟؟؟؟؟؟؟؟؟*
باتشکر و احترام فراوان

----------


## farhud

جناب NewFoxStudent

ظاهرا اين كلاس با چاپ حروف فارسي مشكل داره. اما شما توانسته‌ايد از آن استفاده كنيد.
ممكنه راه حل رفع مشكل فارسي را هم بنويسيد؟

----------


## iranigirl1364

*باسلام:*
*ممکنه لطفا یک نفر به سوال من پاسخ بده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟*
*با تشکر و احترام فراوان*

----------


## iranigirl1364

با سلام:
لطفا یک نفر به سوالم جواب بده
باتشکر واحترام فراوان

----------


## hana2064

اگه از کریستال ریپورت استفاده میکردید مطمینا راحت و سریع به جواب میرسید
من قبلا دنبال چنین کلاسهای بودم چند تایی که توی codeproject هست مشکل right toleft دارن و همینطور مشکل فرستادن پارامترهای مورد نظر کاربر(همون 4تا Textbox مورد نظر)
من با کلاسهایی که بچه ها فرستادن قبلا کار کردم مشکل  دیگه شون هم اینه که وقتی محتویات سلولها زیاد باشه توی کاغذ جا نمیشه و کل پرینت به هم میریزه

با کریستال راحت میتونین پارامترها رو پاس بدید و مشکل جا نشدن متن و راست به چپ رو ندارین. یه کامپوننت استاندارد که امکانات زیادی هم داره.

----------


## mehrzad_ali

اول text box هاتو بذار تويه يه groupbox بهد از group box پرينت بگير
بعد يه print document به فرم اضافه كن و اين كد رو توش بنويس
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Bitmap bm = new Bitmap(this.groupbox1.Width, this.groupbox1.Height);

this.groupbox1.DrawToBitmap(bm, new Rectangle(0, 0, this.groupbox1.Width, this.groupbox1.Height));

e.Graphics.DrawImage(bm, 0, 0);
}
اين كد رو هم تويه دكمه پرينت بنويس
prindocument1.print();
حالا براي ديتا گريد هم همون كارارو بكن فقط به جاي group box بزار datagriedview

----------


## iranigirl1364

با سلام:دوست گرامی با آی د ی  hana2064 من نمی توانم از کریستال رییپورت استفاده کنم در واقع از من خواسته شده که از کریستال ریپورت استفاده نکنم.دوست گرامی با آی د یmehrzad_aliمن دقیقا مراحل گفته شده توسط شما را انجام دادم ولی هیچ پرینتی گرفته نمی شود.ممکنه مرا راهنمایی کنید؟چرا پرینت گرفته نمی شود؟ :ناراحت: لطفا مرا راهنمایی کندبا تشکر و احترام فراوان

----------


## mehrzad_ali

اگه error ميده بنويس تا راهنماييت كنم
شايد مربوط به پرينتره

----------


## mehredin_1360

سلام به دوستان عزیز از دوستان اگه سورس چاپ از datagridview را لطف کنند ممنون میشم اخه من هر چه گشتم به زبان #c پیدا نکردم لطفا در صورت جواب دادن بصورت خیلی ساده بیان کنید من اولین بارم میخواهم از دیتاگریدویو پرینت بگیرم 
منتظر راهنمایی شما عزیزانه هستم

----------


## b.mahsa

من از این کد استفاده کردم اما قبل از print گرفتن پنجره ی save dialog  را باز می کند . :گریه:

----------


## moferferi

سلام.
کسی هنوز نتونسته مشکل right to left را حل کنه؟

----------


## فاطی.جدا

سلام
من هم از این کد استفاده کردم اماتو این قسمت ارور میده 
 public Double PrintPreviewZoom
        { get; set; }
البته قبلا و در ابتدای این تاپیک این سوال مطرح شده بود اما من نتونستم حلش کنم

----------


## فاطی.جدا

iranigirl1364 عزیز ، منظورتون از این که مشکل رو با برگردون یه مقدار برای get حل کردید چیه ؟میشه بفرمایید چون کار من هم گیر این تیکه کد هست.

----------


## 5mmmmm

> سلام.
> 
> به نظر من با اینکه کدهایی که دوستان دادند خیلی عالیه ولی زیاد خودت را درگیر این کدها نکن و فقط از کد ساده زیر استفاده کن:
> 
> یک کنترل PrintPreviewDialog و یک کنترل PrintDocument به فرمت اضافه کن و یک Button حالا در باتن کد زیر را وارد کن:
> 
> 
> printPreviewDialog1.ShowDialog();
>  و در رویداد printpage مربوط به printdocument کد زیر را وارد کن.
> ...


ولی این فقط یه عکس از دیتاگرید ویو میگیره و اگر دیتا گرید بزرگتر از اندازه صفحه باشه بقیش میپره!
ولی در کل روش جالبی بود.
تشکر

----------


## 5mmmmm

> *با سلام:*
> *کسی به سوال من جواب نمی ده؟*
> *4 تا متغیر توی 4 تا TextBox دارم و در زیر آن یک دیتا گرید دارم*
> *چگونه این 4 تا متغیر و محتویات دیتا گرید را چاپ کنم؟؟؟؟؟؟؟؟؟؟؟؟؟*
> *با تشکر و احترام فراوان*


چرا از کریستال ریپورت استفاده نمی کنی؟
یک گزارش کریستال بساز.چهار تا تکست باکس را بصورت پارامتر به اون ارجاع بده و هنگامی که می خوای چاپ کنی پارامترها را مقدار دهی کن با تکست باکس ها.
فقط می مونه طراحی کریستال!

----------


## top7news

سلام
ميشه اين روشي كه گفتي رو با يه مثال عملي كامل توضيح بدين
جز به جز
مرسي

----------


## mary3541

> ببین این بدردت میخوره
> منبعش هم سایت CodeProject
> ضمیمه 31907


 سلام
من از این کلاس تو پروژم استفاده کردم error ی هم نداد ولی نمیدونم چرا وقتی دکمه چاپ رو میزنم dgv رو خالی میاره و فقط header اون رو میاره

----------


## mary3541

> ضمیمه 31914
> 
> این کلاس هم بد نیست 
> امکانات بیشتری داره
> 
> اینم منبعش CodeProject ولی لینکش رو پیدا نکردم


 کسی میتونه در مورد کدهای این پروژه توضیح بده؟

----------


## navid1n2000

> چرا از کریستال ریپورت استفاده نمی کنی؟
> یک گزارش کریستال بساز.چهار تا تکست باکس را بصورت پارامتر به اون ارجاع بده و هنگامی که می خوای چاپ کنی پارامترها را مقدار دهی کن با تکست باکس ها.
> فقط می مونه طراحی کریستال!


 اين مورد چاپ اطلاعات ديتاگريدويو مشكل خيلياست
خواهش ميكنم يهمثال عملياز چاپ با كريستال بذارين اينجا
خيليا استفاده مي برن
يكيش خودم كه 4 ماه موندم رو همين مشكل

----------


## Exception

من معمولا بجای چاپ اطلاعات، خروجی PDF رو ترجیح میدم. اگر فکر میکنید به درد شما هم میخوره، این رو ببینید: http://hasheminezhad.com/gridtopdf

----------


## javad_mjt

سلام 
مشکل right to left چاپ گرید ویو به راحتی حل میشه.
باید توی کلاسی که برای چاپ استفاده می کنین دنبال دو تا حلقه for یا while بگریدین که عمل درج header و متن گریدتون و انجام میده و اون حلقه رو معکوسش کنین. تا عمل درج  از   چپ به راست  به    راست به چپ  تبدیل بشه.

----------


## javad_mjt

سلام
یه کامپوننت هم به نام  janus هست که این امکان و با دیتا گریدی که داره فراهم می کنه
مشکل righ to left  هم نداره فقط یه مشکل کوچیک داره که فکر کنم دوستان بتونن حلش کنن
زمانی که متن یه سلول زیاده متن تا همون جایی چاپ می کنه که نشون داده میشه.
یعنی دقیقا دیتا گرید و چاپ می کنه باید کاری کنیم که زمانی متن از اندازه سلول بیشتر شد بره خط بد یا اینکه تو تنظیمات پرینتش دست برد من که تنونستم این مشکل و حل کنم

----------


## ho_612

> سلام 
> مشکل right to left چاپ گرید ویو به راحتی حل میشه.
> باید توی کلاسی که برای چاپ استفاده می کنین دنبال دو تا حلقه for یا while بگریدین که عمل درج header و متن گریدتون و انجام میده و اون حلقه رو معکوسش کنین. تا عمل درج از چپ به راست به راست به چپ تبدیل بشه.


 اگه امکان داره اصلاح شده اش رو برا دانلود بگذارید.ممنون میشم.....

----------


## ho_612

آقا کسی میتونه راست به چپ کنه؟؟؟؟

----------


## ho_612

کسی نیست نمایش این رو راست به چپ کنه؟

----------


## bahar.barekat

قربون دستت

----------


## ali_a1354

> دوست عزیز این پیش نمایش چاپه. بعد از دیدن پیش نمایش برای چاپ از بالای پنجره سمت چپ روی شکل چاپگر یا print کلیک کن حتما چاپ می شه.
> 
> یا اگه نخواستی دستور زیر را اجرا کن.
> 
> 
> printDocument1.Print();


 دستت درد نکنه عالی بود نجاتم داد.

----------


## ali_a1354

دوست عزیز امکانش هست که تبدیل شده این کلاس به وی بی دات نت لود کنی? اگه بشه ممنونت میشم من نتونستم تبدیلش کنم.

----------


## ali_a1354

> دوست عزیز امکانش هست که تبدیل شده این کلاس به وی بی دات نت لود کنی? اگه بشه ممنونت میشم من نتونستم تبدیلش کنم.


سلام مشکلم حل شد کلاس وی بی رو داخل پست قبل پیدا کردم و به برنامه خودم اضافه کردم و به خوبی جواب داد فقط مشکل righ to left داره ؟ با تشکر از دوست عزیزی که این کلاس رو ارائه کردند.

----------


## piazche

با سلام .من یه نرم افزار برای یه شرکت نوشتم ،توی این نرم افزار دکمه ای برای چاپ اطلاعات datagridview گذاشتم و برای چاپ از printdocument ویک کلاس استفاده کردم ولی مشکل اینجاست که من هنگامی که نمونه چاپ اطلاعات رو در onenote می بینم متوجه این شدم که تمام ستون های جدولم به طور کامل چاپ نشده مثلاً 4 ستون آخر جدول چاپ نشده .لطفاًراهنمایی بفر مایید. در ضمن من کدهای کلاس و printdocument و بقیه کد های مربوط به چاپ رو براتون میزارم.

----------

