none
C# Dev Express Gridview Satır Renklendirme RRS feed

  • Soru

  • Merhaba, Giridview "TUTAR" sütununda eksi değerler var. Gridview yüklendiğinde eksi değer bulunan satırların renklenmesini istiyorum. 

     

    private void gridView1_RowCellStyle(object sender, RowCellStyleEventArgs e) {

    int deger= Convert.ToInt32(gridView1.GetRowCellValue(e.RowHandle, "TUTAR"));

    if (deger < 0)

    {

    e.Appearance.BackColor = Color.Yellow; e.Appearance.ForeColor = Color.Red; }

    Yukarıdaki kodlar hiç bir renklendirme yapmıyor . Aşağıdaki kodlarda  ise "-" ve "+"  tüm satırları yeşil ve kırmızı olarak  renklendiriyor.

           private void gridView1_RowCellStyle(object sender, RowCellStyleEventArgs e)
            {            
                int deger= Convert.ToInt32(gridView1.GetRowCellValue(e.RowHandle, "TUTAR"));
                if (deger < 0)
                {
                    e.Appearance.BackColor = Color.Yellow;
                    e.Appearance.ForeColor = Color.Red;
                }
                else
                {
                   e.Appearance.BackColor = Color.LightGreen;
                    e.Appearance.ForeColor = Color.Red;
                }
    Benim istediğim eksi satırların Arka planı Sarı Yazı rengi ise Kırmızı olsun. Bu konuda yardımlarınızı bekliyorum.



    • Düzenleyen mhmtgnlds 23 Mayıs 2019 Perşembe 14:57
    23 Mayıs 2019 Perşembe 14:55

Yanıtlar

  • yada ille kod olacaksa

     if (e.RowHandle != DevExpress.XtraGrid.GridControl.AutoFilterRowHandle && e.RowHandle != DevExpress.XtraGrid.GridControl.InvalidRowHandle)
                {
                    GridView view = sender as GridView;
                    if (e.Column == colTutar && view.GetRowCellValue(e.RowHandle,colTutar)!=DBNull.Value)
                    {
                        if ((decimal?)e.CellValue<=0) //even number
                        {
                            e.Appearance.BackColor = Color.IndianRed;
                            e.Appearance.BackColor2 = Color.GreenYellow;
                            e.Appearance.Options.UseBackColor = true;
                        }
                    }
                    
                }      

    • Yanıt Olarak İşaretleyen mhmtgnlds 26 Mayıs 2019 Pazar 22:10
    23 Mayıs 2019 Perşembe 23:41
  • Merhaba, Cevaplarınız için teşekkür ederim. Bazı nedenlerden dolayı ancak cevap yazabildim.

    Sayın, M.E.KAYMAZ cevabınız için teşekkür ederim Link1' i görmüştüm ama Link2'yi görmemiştim. Ancak bu ayarlarla bir türlü renklendirme yapamadım. Kolon adı gelmiyor. Acaba GridView Run Designer' den Column ayarları yapılmadığı için mi? 

    ...
    Nerede hata yaptığımı söyleyebilirseniz, memnun olacağım. Cevaplarınız için  Hepinize tekrar teşekkür ederim. İyi Çalışmalar
          Verilerinizin bir sınıfı varsa , bindingsource'e o sınıfı gösterin sonra datagridin datasource une de sizin bindingsource u gösterin.Kolon isimleri gelecektir sonra koşulları yazın.@kırık donanım'ın gösterdiği şekilde.
    • Yanıt Olarak İşaretleyen mhmtgnlds 26 Mayıs 2019 Pazar 22:11
    24 Mayıs 2019 Cuma 08:35

Tüm Yanıtlar

  • Devexpress'i çok kullanmadım ama bunları yapmak için kod yazmanızın gerekmediğini biliyorum.

    Link , Link2 

    23 Mayıs 2019 Perşembe 15:10
  • Anlatmaya çalıştım bir incele Format Rules
    23 Mayıs 2019 Perşembe 23:29
  • yada ille kod olacaksa

     if (e.RowHandle != DevExpress.XtraGrid.GridControl.AutoFilterRowHandle && e.RowHandle != DevExpress.XtraGrid.GridControl.InvalidRowHandle)
                {
                    GridView view = sender as GridView;
                    if (e.Column == colTutar && view.GetRowCellValue(e.RowHandle,colTutar)!=DBNull.Value)
                    {
                        if ((decimal?)e.CellValue<=0) //even number
                        {
                            e.Appearance.BackColor = Color.IndianRed;
                            e.Appearance.BackColor2 = Color.GreenYellow;
                            e.Appearance.Options.UseBackColor = true;
                        }
                    }
                    
                }      

    • Yanıt Olarak İşaretleyen mhmtgnlds 26 Mayıs 2019 Pazar 22:10
    23 Mayıs 2019 Perşembe 23:41
  • GridView View = sender as GridView;
                if (e.RowHandle >= 0)
                {
                    string TUTAR= Convert.ToString(View.GetRowCellDisplayText(e.RowHandle, View.Columns["TUTAR"]));
                    if (TUTAR== "-")
                    {
                        e.Appearance.BackColor = Color.LimeGreen;
                        e.Appearance.BackColor2 = Color.LimeGreen;
                        e.Appearance.ForeColor = Color.Black;
    
                    }
                    if (TUTAR== "+")
                    {
                        e.Appearance.BackColor = Color.Salmon;
                        e.Appearance.BackColor2 = Color.Salmon;
                        e.Appearance.ForeColor = Color.Black;
                    }
                }
    RowCellStyle metodunun içindekileri yukarıdakilerle değiştirin...

    • Düzenleyen XentoX 24 Mayıs 2019 Cuma 06:21
    24 Mayıs 2019 Cuma 06:20
  • Merhaba, Cevaplarınız için teşekkür ederim. Bazı nedenlerden dolayı ancak cevap yazabildim.

    Sayın, M.E.KAYMAZ cevabınız için teşekkür ederim Link1' i görmüştüm ama Link2'yi görmemiştim. Ancak bu ayarlarla bir türlü renklendirme yapamadım. Kolon adı gelmiyor. Acaba GridView Run Designer' den Column ayarları yapılmadığı için mi? 

    Sayın Önay YALÇINER cevabınız için teşekkür ederim. Run Designer de Kolon adı gelmiyor. Acaba GridView Run Designer' den Column ayarları yapılmadığı için mi? 

    kod ile yapmaya çalıştığımda; if (e.Column == colTutar && view.GetRowCellValue(e.RowHandle, colTutar) != DBNull.Value) kod satırında " 'colTUTAR' adı geçerli bağlamda yok" hatası alıyorum.

    Sayın, haXan2000 cevabınız için teşekkür ederim.Kodları denediğimde; string TUTAR = Convert.ToString(View.GetRowCellDisplayText(e.RowHandle, View.Columns["TUTAR"])); kod satırında "Değer null olamaz." hatası alıyorum.

    Nerede hata yaptığımı söyleyebilirseniz, memnun olacağım. Cevaplarınız için  Hepinize tekrar teşekkür ederim. İyi Çalışmalar
    24 Mayıs 2019 Cuma 08:13
  • Merhaba, Cevaplarınız için teşekkür ederim. Bazı nedenlerden dolayı ancak cevap yazabildim.

    Sayın, M.E.KAYMAZ cevabınız için teşekkür ederim Link1' i görmüştüm ama Link2'yi görmemiştim. Ancak bu ayarlarla bir türlü renklendirme yapamadım. Kolon adı gelmiyor. Acaba GridView Run Designer' den Column ayarları yapılmadığı için mi? 

    ...
    Nerede hata yaptığımı söyleyebilirseniz, memnun olacağım. Cevaplarınız için  Hepinize tekrar teşekkür ederim. İyi Çalışmalar
          Verilerinizin bir sınıfı varsa , bindingsource'e o sınıfı gösterin sonra datagridin datasource une de sizin bindingsource u gösterin.Kolon isimleri gelecektir sonra koşulları yazın.@kırık donanım'ın gösterdiği şekilde.
    • Yanıt Olarak İşaretleyen mhmtgnlds 26 Mayıs 2019 Pazar 22:11
    24 Mayıs 2019 Cuma 08:35
  • Merhaba, Cevaplarınız için teşekkür ederim. Bazı nedenlerden dolayı ancak cevap yazabildim.

    Sayın, M.E.KAYMAZ cevabınız için teşekkür ederim Link1' i görmüştüm ama Link2'yi görmemiştim. Ancak bu ayarlarla bir türlü renklendirme yapamadım. Kolon adı gelmiyor. Acaba GridView Run Designer' den Column ayarları yapılmadığı için mi? 

    ...
    Nerede hata yaptığımı söyleyebilirseniz, memnun olacağım. Cevaplarınız için  Hepinize tekrar teşekkür ederim. İyi Çalışmalar

          Verilerinizin bir sınıfı varsa , bindingsource'e o sınıfı gösterin sonra datagridin datasource une de sizin bindingsource u gösterin.Kolon isimleri gelecektir sonra koşulları yazın.@kırık donanım'ın gösterdiği şekilde.

    Merhaba bu anlattıklarınız beni aşıyor.:) Ben verileri aldığım kodlar aşağıda. Eğer Kolonları Run Design ile yapmam gerekiyorsa yapacam ve ya bir de öyle deneyeceğim. Teşekkür Ederim.

     void HareketleriGetir()
            {
                DataTable hareketler = new DataTable();
                SQLiteDataAdapter hareketoku = new SQLiteDataAdapter("SELECT *FROM tblHareket ORDER BY tarih DESC", bag.baglanti());
                hareketoku.Fill(hareketler);
                grcHareket.DataSource = hareketler;
                gridView1.Columns["tutar"].DisplayFormat.FormatType = FormatType.Numeric;
                gridView1.Columns["tutar"].DisplayFormat.FormatString = "n2";
                gridView1.Columns[0].Visible = false;
                gridView1.Columns[1].Width = 65;
                gridView1.Columns[2].Width = 150;
                gridView1.Columns[3].Width = 70;
                gridView1.Columns[4].Width = 100;
                gridView1.Columns[5].Width = 50;
                gridView1.Columns[6].Width = 30;
                gridView1.Columns[1].Caption = "   TARİH";
                gridView1.Columns[2].Caption = "       AÇIKLAMA";
                gridView1.Columns[3].Caption = "     TUTAR";
                gridView1.Columns[4].Caption = "      NOTLAR";
                gridView1.Columns[5].Caption = "   TİPİ";
                gridView1.Columns[6].Caption = "B/A";
    
                gridView1.Appearance.HeaderPanel.Font = new System.Drawing.Font(gridView1.Appearance.HeaderPanel.Font, FontStyle.Bold);
                gridView1.Appearance.Row.Font = new Font("Cambria", 8);
    }

    24 Mayıs 2019 Cuma 08:53
  • Tüm projelerimde verdiğim kod ile renklendirme yapıyorum.

    Değer null olamaz hatası alıyorsanız grid içerisinde Tutar değerinin + veya - değil boş geliyor olma ihtimali var mı ? Eğer o satır boşta gelebiliyorsa ona göre kodda düzenleme yapılırsa çalışacaktır... 

    Çünkü mevcut kod + veya - değer alınca renklendirme yapıyor. NullorEmpty durumunda da ne yapılacağı yazılırsa hata vermeyecektir.

    25 Mayıs 2019 Cumartesi 07:55
  • Tüm projelerimde verdiğim kod ile renklendirme yapıyorum.

    Değer null olamaz hatası alıyorsanız grid içerisinde Tutar değerinin + veya - değil boş geliyor olma ihtimali var mı ? Eğer o satır boşta gelebiliyorsa ona göre kodda düzenleme yapılırsa çalışacaktır... 

    Çünkü mevcut kod + veya - değer alınca renklendirme yapıyor. NullorEmpty durumunda da ne yapılacağı yazılırsa hata vermeyecektir.

    Merhaba haXan2000, öncelikle cevabınıza teşekkür ederim. Normalde renklendirme kodları olmadan uygulamayı çalıştırdığımda  DataGrid yükleniyor ve "TARİH" sütununda boş hücre yok. Renklendirme kodları ile uygulamayı çalıştırdığımda ise "Değer null olamaz" hatası alıyorum. Önceki Mesajımda belirttiğim " HareketleriGetir()" kodları ile Formun Load olayında DataGridi dolduruyorum. Bu kodları RowCellStyle altında da çağırıp denedim ama renklendirme kodları devreye girince GridView yüklenmiyor ve"Değer null olamaz" hatası alıyorum. Bunu nasıl çözebileceğim hakkında yardımcı olabilirseniz memnun olurum. İyi Çalışmalar
    25 Mayıs 2019 Cumartesi 22:31
  •       Verilerinizin bir sınıfı varsa , bindingsource'e o sınıfı gösterin sonra datagridin datasource une de sizin bindingsource u gösterin.Kolon isimleri gelecektir sonra koşulları yazın.@kırık donanım'ın gösterdiği şekilde.

    Sayın, M.E.KAYMAZ cevabınız için teşekkür ederim (Kırık Donanıma da ayrıca teşekkür ederim.) GridView Run Design den tabloyu gösterdim ve ve o sütundaki eksi hücreler  renkleniyor. Ancak tüm satırın renklenmesi için ne yapmalıyım? Tekrar teşekkür ederim.

    • Düzenleyen mhmtgnlds 26 Mayıs 2019 Pazar 21:26
    26 Mayıs 2019 Pazar 21:25
  •       ...

    Sayın, M.E.KAYMAZ cevabınız için teşekkür ederim (Kırık Donanıma da ayrıca teşekkür ederim.) GridView Run Design den tabloyu gösterdim ve ve o sütundaki eksi hücreler  renkleniyor. Ancak tüm satırın renklenmesi için ne yapmalıyım? Tekrar teşekkür ederim.

          @kırık donanımın paylaştığı resimde de görünüyor orada Applytorow seçeneği false işaretli , onu true yaptığınızda tüm satıra uygulamalı.
    26 Mayıs 2019 Pazar 22:00
  • Sayın M.E. Kaymaz size ve cevaplayan herkese teşekkür ederim
    26 Mayıs 2019 Pazar 22:10