RadDataGridView Satırdaki Değere Göre Renklendirme

Hepimizin istediği bir olaydır aslında bu. Grid de ki bir değere göre koyu kırmızı – açık kırmızı yapsın, hatta bunu otomatik yapsın diyebilirsiniz. Bunu yapınca hakkaten çok harika bir görüntü oluyor. Hemen fonksiyonumu yazayım;;;;;

http://www.ylmz.com/c-thread-yerine-backgroundworker-kullanalim.html
şu yazımızda bi kenarda dursun, bunun devamı gibi düşünün.

public Color Renklendir(double vl, double maxvl, double minvl)
{
   // max ile min değer aynı veya normal değerimiz 0 ise beyaz dönsün.
   if (minvl == maxvl || vl == 0) return Color.White; 
 
   // RGB formatında kırmızı renk değerini korumak için 200 değerine göre ortalama çıkarıyoruz.
   var ort = (int)(200 * vl / max); 
 
   // Aha işte budur !! kırmızı tonlarını ayarlıyoruz buradan ve döndürüyoruz.
   return Color.FromArgb(255 - (int)(ort * ((255 - 240) / 240.0)), 240 - ort, 240 - ort); 
}
 
// Bunu yazdık, şimdi ise bunu RadGridView de kullanalım;
button1_Click(object sender, EventArgs e)
{
    DataTable db = (DataTable)dataGridView1.DataSource;
    int maxdeger = Convert.ToInt32(db.Compute("MAX([TOPLAM])","").ToString()); 
    int mindeger = Convert.ToInt32(db.Compute("MIN([TOPLAM])","").ToString());
 
    for (int y = 0; y < this.dataGridView1.RowCount; y++)
    {
        for (int x = 0; x < this.dataGridView1.ColumnCount; x++)
        {
             this.dataGridView1.Rows[y].Cells[x].Style.CustomizeFill = true;
             this.dataGridView1.Rows[y].Cells[x].Style.DrawFill = true;
             this.dataGridView1.Rows[y].Cells[x].Style.BackColor = Renklendir(Convert.ToDouble(this.dataGridView1.Rows[y].Cells["TOPLAM"].Value.ToString()), maxdeger, mindeger);
        }
    }
}

Bir Cevap Yazın