none
Şartlı renklendirme(gridview1) RRS feed

  • Soru

  • İyi akşamlar arkadaşlar,

    Gridview1 içerisinde durumu pasif olan veriyi aşağıdaki kod ile şartlı renklendirme ile kırmızı gösterebiliyorum. Ayrıca grid de GelisTarihi olan alanımın içeriği boş olunca da kırmızı ile renklendirmek istiyorum. Konu ile ilgili yardımcı olabilir misiniz ? Teşekkürler.

    private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
            {
                {
                    var quantity = gridView1.GetRowCellValue(e.RowHandle, "Durum");
     
                    if (quantity == null)
                        return;
     
                    if (quantity.ToString() == "Pasif")
                    {
                        e.Appearance.BackColor = Color.Red;
                    }
                    else
                    {
                        e.Appearance.BackColor = Color.Wheat;
                        e.Appearance.ForeColor = Color.Black;
     
     
                    }
     
                    
                    e.HighPriority = true;
     
     
                }
            }
    


    Halil GÜVEN


    14 Nisan 2019 Pazar 19:19

Yanıtlar

  • Mutemelen modelin yanlış, Tarih alanını string olarak falan tutuyorsan olmayacaktır tabiki. Tarih alanını string olarak tutmak yapilebilecek yanlışların en büyüğüdür.

    benim modelim ve sonucu aşağıdaki gibi.


        public class OrderItem
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public DateTime Date { get; set; }
            public DateTime? ShippingDate { get; set; }
            public int Quantity { get; set; }
            public decimal Price { get; set; }
            public decimal Amount => Price * Quantity;
    
            public static IEnumerable<OrderItem> Create() => new[] {
                new OrderItem{ Id =1, Date = DateTime.Today, Name = "Soğan", Price = 7.89m, Quantity = 7, ShippingDate = null },
                new OrderItem{ Id =2, Date = DateTime.Today.AddDays(1), Name = "Elma", Price = 5m, Quantity = 3, ShippingDate = DateTime.Today.AddDays(5) },
                new OrderItem{ Id =3, Date = DateTime.Today.AddDays(2), Name = "Karpuz", Price = 12m, Quantity = 5, ShippingDate = DateTime.Today.AddDays(4) },
                new OrderItem{ Id =4, Date = DateTime.Today.AddDays(3), Name = "Nar", Price =8.15m, Quantity = 3, ShippingDate = null },
            };
        }


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    • Yanıt Olarak İşaretleyen Halil GÜVEN 16 Nisan 2019 Salı 10:55
    16 Nisan 2019 Salı 10:53
    Moderatör

Tüm Yanıtlar

  • Ben çok pahalı bulduğum icin devexpress kullanmıyorum, ancak senin koduna bakınca, boyle olmuyor mu:

    private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
            {
                {
                    var quantity = gridView1.GetRowCellValue(e.RowHandle, "Durum");
     
                    if (quantity == null)
                        return;
                    var gelis = gridView1.GetRowCellValue(e.RowHandle, "GelisTarihi");
     
                    if (quantity.ToString() == "Pasif")
                    {
                        e.Appearance.BackColor = Color.Red;
                    }
    
    else if (gelis == null) // Devexpress'te bos tarih boyle mi bilmiyorum 
    {
                        e.Appearance.BackColor = Color.Red;
    
    } 
    
    
                    else
                    {
                        e.Appearance.BackColor = Color.Wheat;
                        e.Appearance.ForeColor = Color.Black;
     
     
                    }
     
                    
                    e.HighPriority = true;
     
     
                }
            }


    14 Nisan 2019 Pazar 19:56
    Yanıtlayıcı
  • İlginiz için teşekkürler hocam. Daha önce bu şekile benzer kodu denedim ancak çalışmamıştı.

    Halil GÜVEN


    14 Nisan 2019 Pazar 20:03
  • Aslında kod yazmanıza gerek yok.

    • Designer penceresini açın
    • Format Rules gurubuna girin,
    • Yeni bir rule ekleyin ve user defined .... olarak belirtin.
    • Tüm satıra uygulanmasını istiyorsanız Apply To Row true yapın
    • Appreance'den nasıl görüneceğini ayarlayın.
    • Expressiondan ifadeyi belirtin. Örn: [Pasif] = true ya da Fiyat > 100 gibi


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    14 Nisan 2019 Pazar 21:10
    Moderatör
  • Hocam merhaba,

    İlgili alanları buldum ancak ,

    • Appreance'den nasıl görüneceğini ayarlayın.
    • Expressiondan ifadeyi belirtin. Örn: [Pasif] = true ya da Fiyat > 100 gibi

    alanlarını bulamadım.



    15 Nisan 2019 Pazartesi 11:07
    • İlk görseldeki Rule da, "Format based on user defined" gibi olanı seçin.
    • Altında Appereance, Expression ve PredefinedName çıkacak.
    • Bundan sonra PredefinedName de Green bg Green text gibi bişey olması lazım onu seçin.
    • Expression un … tıklayınca pencere açılacak, Fields'i seçince alanlarınız belirmesi lazım. Burdan kural vereceğiniz alanı ve kuralı yukarıdaki büyük kutuda belirtin Örneğin [Fiyat] > 100 gibi

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com


    15 Nisan 2019 Pazartesi 11:16
    Moderatör
  • Dediğiniz alaları buldum hocam adet alanı için uyguladım aşağıdaki görselde olduğu gibi Adet sayısı 1 den büyük olanları renklendirmek için uyguladım ancak çözüme ulaşmadı. Grid' de default renklendirme var bundan dolayı olabilir mi acaba ? Biraz daha uğraşayım.

    Halil GÜVEN

    15 Nisan 2019 Pazartesi 11:29
  • Hocam çok teşekkür ederim. İstediğim şekilde oldu ancak size zahmet olacak ama GelisTarihi boş olursa bu renklendirmeyi yapmak istiyorum. Bunun şartı nasıl olmalı. Ben adete [Adet] = 1 bu şartı uygulayarak renklendirme yaptım. 

    [GelisTarihi] = null vs gibi bir şart yazmam lazım. Bunu nasıl yazabilirim ?


    Halil GÜVEN

    15 Nisan 2019 Pazartesi 11:38
  • [GelisTarihi] is null

    şeklinde denermisin.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    15 Nisan 2019 Pazartesi 23:07
    Moderatör
  • Merhaba Önay hocam,

    Dediğiniz şekilde denedim ancak işlem görmüyor.


    Halil GÜVEN

    16 Nisan 2019 Salı 06:29
  • Çözüm olarak aşağıdaki ile çalışmıştır.

    Teşekkürler.

    IsNullOrEmpty([GelisTarihi])


    Halil GÜVEN

    16 Nisan 2019 Salı 08:45
  • Mutemelen modelin yanlış, Tarih alanını string olarak falan tutuyorsan olmayacaktır tabiki. Tarih alanını string olarak tutmak yapilebilecek yanlışların en büyüğüdür.

    benim modelim ve sonucu aşağıdaki gibi.


        public class OrderItem
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public DateTime Date { get; set; }
            public DateTime? ShippingDate { get; set; }
            public int Quantity { get; set; }
            public decimal Price { get; set; }
            public decimal Amount => Price * Quantity;
    
            public static IEnumerable<OrderItem> Create() => new[] {
                new OrderItem{ Id =1, Date = DateTime.Today, Name = "Soğan", Price = 7.89m, Quantity = 7, ShippingDate = null },
                new OrderItem{ Id =2, Date = DateTime.Today.AddDays(1), Name = "Elma", Price = 5m, Quantity = 3, ShippingDate = DateTime.Today.AddDays(5) },
                new OrderItem{ Id =3, Date = DateTime.Today.AddDays(2), Name = "Karpuz", Price = 12m, Quantity = 5, ShippingDate = DateTime.Today.AddDays(4) },
                new OrderItem{ Id =4, Date = DateTime.Today.AddDays(3), Name = "Nar", Price =8.15m, Quantity = 3, ShippingDate = null },
            };
        }


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    • Yanıt Olarak İşaretleyen Halil GÜVEN 16 Nisan 2019 Salı 10:55
    16 Nisan 2019 Salı 10:53
    Moderatör