folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# Datagridview Verilerini Yazıcıdan Çıktı Alma



C# Datagridview Verilerini Yazıcıdan Çıktı Alma

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Jigsaw
    Jigsaw's avatar
    Kayıt Tarihi: 07/Nisan/2011
    Erkek

    Merhaba mübarekler,

     

    Şimdi benim formumda bir datagridview, bir yazdır butonu (btn_Yazdir), bir baskı önizleme butonu(btn_BaskiOnizleme), bir de sayfa yapısı butonu (btn_SayfaYapisi) var. Ben datagridviewdeki verileri yazdırmak istiyorum. Tabi ondan once de baskı onizleme butonuna tıklandığında önizleme göstermek istiyorum. Kodlama şu şekilde; 

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)

            {

    Font baslik = new System.Drawing.Font("Arial",13,FontStyle.Bold);

                Font altbaslik= new System.Drawing.Font("Arial",12,FontStyle.Regular);

     

                System.Drawing.Printing.PageSettings p= printDocument1.DefaultPageSettings;

                int x=135,y=135,say=datagridview1.Rows.Count;

     

                e.Graphics.DrawLine(new Pen(Color.Black,2),p.Margins.Left,125,p.PaperSize.Width-p.Margins.Right,125);

     

                e.Graphics.DrawString("Ad",baslik,Brushes.Black,130,130);

                e.Graphics.DrawString("Soyad",baslik,Brushes.Black,300,130);

                e.Graphics.DrawString("Telefon",baslik,Brushes.Black,460,130);

     

                e.Graphics.DrawLine(new Pen(Color.Black,2),p.Margins.Left,153,p.PaperSize.Width-p.Margins.Right,153);

     

                int i = 0;

     

                if (i < say)

                {

                    x += 25;

                    string ad = datagridview1.Rows[i].Cells[1].Value.ToString();

                    string soyad = datagridview1.Rows[i].Cells[2].Value.ToString();

                    string telefon = datagridview1.Rows[i].Cells[9].Value.ToString();

     

     

     

                    e.Graphics.DrawString(ad, altbaslik, Brushes.Black, 130, x);

                    e.Graphics.DrawString(soyad, altbaslik, Brushes.Black, 300, x);

                    e.Graphics.DrawString(telefon, altbaslik, Brushes.Black, 460, x);

     

                    e.Graphics.DrawLine(new Pen(Color.Black, 2), p.Margins.Left, 153, p.PaperSize.Width - p.Margins.Right, 153);

     

                    i++;

                }
    }

     

    private void btn_Yazdir_Click(object sender, EventArgs e)

            {

     PrintDialog yazdir = new PrintDialog();

                yazdir.Document = printDocument1;

                yazdir.UseEXDialog = true;

                if (yazdir.ShowDialog() == DialogResult.OK)

                {

                    printDocument1.Print();

     

                }  
    }


     private void btn_SayfaYapisi_Click(object sender, EventArgs e)

            {

                pageSetupDialog1.PageSettings = printDocument1.DefaultPageSettings;

                if (pageSetupDialog1.ShowDialog() == DialogResult.OK)

                    printDocument1.DefaultPageSettings = pageSetupDialog1.PageSettings;

     

     

            }


    Şimdi ben bu kodu çalıştırdığımda hata vermiyor. Ancak datagridview den yalnızca bir satır çekiyor. printDocument1_PrintPage' in içerisindeki if döngüsünü while ile denediğimde ise string ad = datagridview1.Rows[i].Cells[1].Value.ToString();  satırında "Nesne başvurusu bir nesnenin örneğine ayarlanmadı." şeklinde hata alıyorum. 

    while döngüsü ile şu şekilde yapıyorum;

     

    while(i<say)

    {

     x += 25;

                    string ad = datagridview1.Rows[i].Cells[1].Value.ToString();

                    string soyad = datagridview1.Rows[i].Cells[2].Value.ToString();

                    string telefon = datagridview1.Rows[i].Cells[9].Value.ToString();

     

     

     

                    e.Graphics.DrawString(ad, altbaslik, Brushes.Black, 130, x);

                    e.Graphics.DrawString(soyad, altbaslik, Brushes.Black, 300, x);

                    e.Graphics.DrawString(telefon, altbaslik, Brushes.Black, 460, x);

     

                    e.Graphics.DrawLine(new Pen(Color.Black, 2), p.Margins.Left, 153, p.PaperSize.Width - p.Margins.Right, 153);

     

     

                    i++;

     

    }

    Neden while döngüsü ile bu hatayı alıyorum çözemedim. Yardımcı olabilecek müridleri bekliyorum. Teşekkürler, iyi günler.

     


    Başkalarına hakim olan kuvvetlidir, kendine hakim olan kudretlidir
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

     

    hocam code formatting denilen bir olay var, lutfen anlasilir olmasi icin bunu kullanin, karman corman halde, okunabilirligi yok bir de bir suru kod..

     

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
         {
    
    Font baslik = new System.Drawing.Font("Arial",13,FontStyle.Bold);
    
                Font altbaslik= new System.Drawing.Font("Arial",12,FontStyle.Regular);
    
                System.Drawing.Printing.PageSettings p= printDocument1.DefaultPageSettings;
    
                int x=135,y=135,say=datagridview1.Rows.Count;
    
    
                e.Graphics.DrawLine(new Pen(Color.Black,2),p.Margins.Left,125,p.PaperSize.Width-p.Margins.Right,125);
    
     
                e.Graphics.DrawString("Ad",baslik,Brushes.Black,130,130);
    
                e.Graphics.DrawString("Soyad",baslik,Brushes.Black,300,130);
    
                e.Graphics.DrawString("Telefon",baslik,Brushes.Black,460,130);
    
     
    
                e.Graphics.DrawLine(new Pen(Color.Black,2),p.Margins.Left,153,p.PaperSize.Width-p.Margins.Right,153);
    
                int i = 0;
    
                if (i < say)
    
                {
    
                    x += 25;
    
                    string ad = datagridview1.Rows[i].Cells[1].Value.ToString();
    
                    string soyad = datagridview1.Rows[i].Cells[2].Value.ToString();
    
                    string telefon = datagridview1.Rows[i].Cells[9].Value.ToString();
    
     
    
                    e.Graphics.DrawString(ad, altbaslik, Brushes.Black, 130, x);
    
                    e.Graphics.DrawString(soyad, altbaslik, Brushes.Black, 300, x);
    
                    e.Graphics.DrawString(telefon, altbaslik, Brushes.Black, 460, x);
     
    
                    e.Graphics.DrawLine(new Pen(Color.Black, 2), p.Margins.Left, 153, p.PaperSize.Width - p.Margins.Right, 153);
                    i++;
    
                }
    }
    
    
    private void btn_Yazdir_Click(object sender, EventArgs e)
    
            {
    
     PrintDialog yazdir = new PrintDialog();
    
                yazdir.Document = printDocument1;
    
                yazdir.UseEXDialog = true;
    
                if (yazdir.ShowDialog() == DialogResult.OK)
    
                {
    
                    printDocument1.Print();
    
     
    
                }  
    }
    
    
    
     private void btn_SayfaYapisi_Click(object sender, EventArgs e)
    
            {
    
                pageSetupDialog1.PageSettings = printDocument1.DefaultPageSettings;
    
                if (pageSetupDialog1.ShowDialog() == DialogResult.OK)
    
                    printDocument1.DefaultPageSettings = pageSetupDialog1.PageSettings;
            }

     

     

     

    while(i<say)
    
    {
    
     x += 25;
    
                    string ad = datagridview1.Rows[i].Cells[1].Value.ToString();
    
                    string soyad = datagridview1.Rows[i].Cells[2].Value.ToString();
    
                    string telefon = datagridview1.Rows[i].Cells[9].Value.ToString();
    
      
    
                    e.Graphics.DrawString(ad, altbaslik, Brushes.Black, 130, x);
    
                    e.Graphics.DrawString(soyad, altbaslik, Brushes.Black, 300, x);
    
                    e.Graphics.DrawString(telefon, altbaslik, Brushes.Black, 460, x);
    
    
                    e.Graphics.DrawLine(new Pen(Color.Black, 2), p.Margins.Left, 153, p.PaperSize.Width - p.Margins.Right, 153);
    
                    i++;
    }


     

     

    duzelmiyor kodun, ben kod olsam ben de calismazdim :) 

    kimse yardimci olmazsa aksam bakarim, suan isteyim

     

     

     

    unbalanced tarafından 05/Ağu/15 12:15 tarihinde düzenlenmiştir

    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    anladigim kadariyla hatan su, null olan bir degeri almaya calisiyorsun

     

     datagridview1.Rows[i].Cells[9].Value bunun sonucu null ise .ToString() yaparsan null exception firlatir. soyle yap while in icindekileri

     

     string ad = ""; 
     
     if(datagridview1.Rows[i].Cells[1].Value != null)
     ad = datagridview1.Rows[i].Cells[1].Value.ToString();
    

     

    digerleri icin de bu sekilde yap


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    erc
    erc's avatar
    Kayıt Tarihi: 23/Aralık/2010
    Erkek

    Ben bunu kullanmistim iyiydi.

    http://www.codeproject.com/Articles/28046/Printing-of-DataGridView

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    dhmm
    dhmm's avatar
    Kayıt Tarihi: 15/Eylül/2011
    Erkek

    Hocam

    Hata aldiginda .Value yazan kismin uzerine mouse ile git ve bak bakalim value = null degerinde mi ?

    Veritabanindan verileri cekerken null ise null degeri aliyor  fakat bos gibi gorunuyor. Ayni zamanda eger datagridview'i kendin olusturuyorsan bos biraktigin Cell lerin Value'si null degerini alir.

    Ayrica su sekilde yapabilirsin o satiri

    Bunun yerine

    datagridview1.Rows[i].Cells[1].Value.ToString();

    Su sekilde yap

    string value = datagridview1.Rows[i].Cells[1].Value == null ? "" :  datagridview1.Rows[i].Cells[1].Value.ToString() ;

    Boylece null oldugu zaman bos string degeri alir ve sikinti olmaz. Ondan sonra value degiskenini kullan.

     

     

    dhmm tarafından 05/Ağu/15 12:57 tarihinde düzenlenmiştir

    Ozgurluk aslinda her istedigini yapabilmek degildir, istemedigini yapmamaktir. // Verdigin degeri gormeyince, gordugun degeri ver !!! // Hayatin herkes icin bir bavulu vardir !!! // Dusmek gerekir bazen hayatta; kalkmayi ogrenebilmek icin
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Jigsaw
    Jigsaw's avatar
    Kayıt Tarihi: 07/Nisan/2011
    Erkek

    @unbalanced,@dhmm ikiside işe yarıyor. Çok teşekkür ederim. Boş değerleri hesaba katmamıştım. Şu an baskı önizleme ve yazdır işlemini yapabiliyorum. Tekrar teşekkür ederim,vakit ayırdığınız için sağolun.

    @unbalanced hoca kusura bakma kodlar öyle dağınık halde değildi aslında. Alel acele konu açtım. 


    Başkalarına hakim olan kuvvetlidir, kendine hakim olan kudretlidir
Toplam Hit: 1532 Toplam Mesaj: 6
c# yazıcı datagridview