folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# Listview Çıktı Alma Sayfalama Problemi



C# Listview Çıktı Alma Sayfalama Problemi

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    farlo54
    farlo54's avatar
    Kayıt Tarihi: 19/Şubat/2013
    Erkek

    merhaba arkadaşlar c# hazırladığım bir uygulamada listview deki listeyi çıktı almam gerekiyor düzenlemiş olduğum kod sorunsuz olarak çıktı veriyor fakat satır sayısı 1. sayfayı aştığında işler karışıyor alttaki kodlarda ne gibi bir düzenleme yaparsam bu sorunu çözebilirim.

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
           {
               //Yazı fontumu ve çizgi çizmek için fırçamı ve kalem nesnemi oluşturdum
               Font myFont = new Font("Calibri", 28);
               SolidBrush sbrush = new SolidBrush(Color.Black);
               Pen myPen = new Pen(Color.Black);
     
     
               //Bu kısımda ürün listesi yazısını ve çizgileri yazdırıyorum
               e.Graphics.DrawLine(myPen, 120, 120, 750, 120);
               e.Graphics.DrawString("ÜRÜN LİSTESİ", myFont, sbrush, 320, 125);
               e.Graphics.DrawLine(myPen, 120, 180, 750, 180);
     
               //Bu kısımda üst bilgileri yazdırıyorum
               e.Graphics.DrawLine(myPen, 120, 200, 750, 200);
               myFont = new Font("Calibri", 12);
               e.Graphics.DrawString("Tarih", myFont, sbrush, 140, 205);
               e.Graphics.DrawString("Bayi/Firma", myFont, sbrush, 220, 205);
               e.Graphics.DrawString("Ürün", myFont, sbrush, 400, 205);
               e.Graphics.DrawString("Adet", myFont, sbrush, 520, 205);
               e.Graphics.DrawString("Takas", myFont, sbrush, 595, 205);
               e.Graphics.DrawString("Patlak", myFont, sbrush, 670, 205);
               e.Graphics.DrawLine(myPen, 120, 228, 750, 228);
     
               int y = 240;
     
               //Yazıyı Sola Daya
               StringFormat SolFormat = new StringFormat();
               SolFormat.Alignment = StringAlignment.Near;
               //Yazıyı Ortaya
               StringFormat OrtaFormat = new StringFormat();
               OrtaFormat.Alignment = StringAlignment.Center;
     
                   //listview verilerini oku
                   foreach (ListViewItem lvi in lstArama.Items)
                   {
     
                       string cpatlak = lvi.SubItems[6].Text;
                       string ctakas = lvi.SubItems[5].Text;
                       string cadet = lvi.SubItems[4].Text;
                       string curun = lvi.SubItems[3].Text;
                       string cbayi = lvi.SubItems[2].Text;
                       string ctarih = lvi.SubItems[1].Text;
     
                       e.Graphics.DrawString(cpatlak, myFont, sbrush, 700, y, OrtaFormat);
                       e.Graphics.DrawString(ctakas, myFont, sbrush, 615, y, OrtaFormat);
                       e.Graphics.DrawString(cadet, myFont, sbrush, 535, y, OrtaFormat);
                       e.Graphics.DrawString(curun, myFont, sbrush, 370, y, SolFormat);
                       e.Graphics.DrawString(cbayi, myFont, sbrush, 220, y, SolFormat);
                       e.Graphics.DrawString(ctarih, myFont, sbrush, 160, y, OrtaFormat);
     
                       y += 20;
                        
                   }
                  
               //En alt toplam miktarları yaz
               e.Graphics.DrawLine(myPen, 120, y, 750, y);
               e.Graphics.DrawString(lbltAdet.Text, myFont, sbrush, 535, y + 10, OrtaFormat);
               e.Graphics.DrawString(lbltTakas.Text, myFont, sbrush, 615, y + 10, OrtaFormat);
               e.Graphics.DrawString(lbltPatlak.Text, myFont, sbrush, 700, y + 10, OrtaFormat);
     
         
       
           }
    1
      
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    farlo54
    farlo54's avatar
    Kayıt Tarihi: 19/Şubat/2013
    Erkek

    up

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Graphicsle olacak ise benzemiyor bi report componenti kullansana


    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    farlo54
    farlo54's avatar
    Kayıt Tarihi: 19/Şubat/2013
    Erkek

    arkadaşlar yardımlarınız için teşekkürler problemimi bi şekilde çözdüm başkalarınada yardımı olur diye eklemek istedim.

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    int i = 0;
        private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
        {
            //Yazı fontumu ve çizgi çizmek için fırçamı ve kalem nesnemi oluşturdum
            Font Baslik = new Font("Arial", 12,FontStyle.Bold);
            Font AltBaslik = new Font("Arial", 12, FontStyle.Regular);
            SolidBrush sbrush = new SolidBrush(Color.Black);
            Pen myPen = new Pen(Color.Black);
     
            System.Drawing.Printing.PageSettings p = printDocument1.DefaultPageSettings;
            int x = 135, y = 135, say = lstArama.Items.Count;
     
            //Yazıyı Sola Daya
            StringFormat SolFormat = new StringFormat();
            SolFormat.Alignment = StringAlignment.Near;
            //Yazıyı Ortaya
            StringFormat OrtaFormat = new StringFormat();
            OrtaFormat.Alignment = StringAlignment.Center;
     
     
            //Bu kısımda üst bilgileri yazdırıyorum
            e.Graphics.DrawLine(myPen, p.Margins.Left, 120, p.PaperSize.Width - p.Margins.Right, 120);
            e.Graphics.DrawString("Tarih", Baslik, sbrush, 120, 125);
            e.Graphics.DrawString("Bayi/Firma", Baslik, sbrush, 205, 125);
            e.Graphics.DrawString("Ürün", Baslik, sbrush, 400, 125);
            e.Graphics.DrawString("Adet", Baslik, sbrush, 530, 125);
            e.Graphics.DrawString("Takas", Baslik, sbrush, 595, 125);
            e.Graphics.DrawString("Patlak", Baslik, sbrush, 670, 125);
            e.Graphics.DrawLine(myPen, p.Margins.Left, 148, p.PaperSize.Width - p.Margins.Right, 148);
     
           
            while (i < say)
            {
                 x += 25;
                //listview deki kayıtları aldk yazdık her seferinde y koordinatını arttırdık
                e.Graphics.DrawString(lstArama.Items[i].SubItems[1].Text, AltBaslik, sbrush, 100, x);
                e.Graphics.DrawString(lstArama.Items[i].SubItems[2].Text, AltBaslik, sbrush, 205, x);
                e.Graphics.DrawString(lstArama.Items[i].SubItems[3].Text, AltBaslik, sbrush, 370, x);
                e.Graphics.DrawString(lstArama.Items[i].SubItems[4].Text, AltBaslik, sbrush, 540, x);
                e.Graphics.DrawString(lstArama.Items[i].SubItems[5].Text, AltBaslik, sbrush, 615, x);
                e.Graphics.DrawString(lstArama.Items[i].SubItems[6].Text, AltBaslik, sbrush, 690, x);
                i++;
     
                //1 sayfayı geçiyorsa burası çalışacak
                if ((x + y + 20) > (p.PaperSize.Height + 60 - p.Margins.Bottom + 60))
                {
                    e.HasMorePages = true;
                    break;
                }
            }
            
            //liste tamamlanmışsa
          if (i >= say)
          {
              e.HasMorePages = false;
              i = 0;
              //En alt toplam miktarları yaz
              e.Graphics.DrawLine(myPen, p.Margins.Left, x + 25, p.PaperSize.Width - p.Margins.Right, x + 25);
              e.Graphics.DrawString(lbltAdet.Text, AltBaslik, sbrush, 535, x + 25);
              e.Graphics.DrawString(lbltTakas.Text, AltBaslik, sbrush, 615, x + 25);
              e.Graphics.DrawString(lbltPatlak.Text, AltBaslik, sbrush, 690, x + 25);
          }
     
        }
Toplam Hit: 2411 Toplam Mesaj: 5