C# Koşullu DataGridView satır renklendirme

Bu konuyu okuyanlar

mustafabilir

Öğrenci
Katılım
23 Ağustos 2019
Mesajlar
12
Reaksiyon puanı
0
Puanları
1
Yaş
39
DataGridView nesnemde 10 adet sütün var.
2. ORMAN adlı sütündaki değer EVET ise tüm satırın rengini kırmızı yapmak istiyorum. Biraz araştırma yaptım fakat sonuca ulaşamadım.
Yardım eder misiniz.
 

sametekinci

Öğrenci
Katılım
14 Ağustos 2019
Mesajlar
11
Reaksiyon puanı
1
Puanları
1
Yaş
36
Kod:
void datarenk()
        {
            for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
            {
                DataGridViewCellStyle renk = new DataGridViewCellStyle();
                if (Convert.ToString(dataGridView1.Rows[i].Cells[1].Value) == "EVET")
                {

                    renk.BackColor = Color.Red;
                    renk.ForeColor = Color.White;
                }

                dataGridView1.Rows[i].DefaultCellStyle = renk;

            }
        }

Daha sonra datagrw.'i getirdiğin olaydan sonra datarenk(); olarak çağırmalısın. Cells[1].Value) istediğin sütün olarak 0-1-2 diye gider.
 

mustafabilir

Öğrenci
Katılım
23 Ağustos 2019
Mesajlar
12
Reaksiyon puanı
0
Puanları
1
Yaş
39
Teşekkür ederim, fakat şu şekilde bir sorunum daha var;
Kod:
private void textBox1_TextChanged(object sender, EventArgs e)
        {
            baglanti.Open();
            DataTable tbl = new DataTable();
            SQLiteDataAdapter ara1 = new SQLiteDataAdapter("select * from tablom where no1 like '%" + textBox1.Text + "%'", baglanti);
            SQLiteDataAdapter ara2 = new SQLiteDataAdapter("select * from tablom where no2 like '" + textBox1.Text + "' ", baglanti);
            SQLiteDataAdapter ara3 = new SQLiteDataAdapter("select * from tablom where no3 like '%" + textBox1.Text + "%'", baglanti);
            SQLiteDataAdapter ara4 = new SQLiteDataAdapter("select * from tablom where no4 like '" + textBox1.Text + "' ", baglanti);
            ara1.Fill(tbl);
            ara2.Fill(tbl);
            ara3.Fill(tbl);
            ara4.Fill(tbl);
            baglanti.Close();
            dataGridView1.DataSource = tbl;
}
Kodundan sonra datarenk(); olarak çağırdığımda yazarken arama yaparken kasıyor çağırmazsam da normal ekranda renkli oluyor arama yaparken bu özellik iptal oluyor. Önüne nasıl geçebilirim?
 

sametekinci

Öğrenci
Katılım
14 Ağustos 2019
Mesajlar
11
Reaksiyon puanı
1
Puanları
1
Yaş
36
Sen;
Kod:
private void textBox1_TextChanged(object sender, EventArgs e)
Burda textbox içinde aratıyorsun, doğal olarak karakter girdikçe işlem yapıyor.
Kodları bir butona atayıp o butonla tek seferde çağırırsan kasmaz.
 

ertan2002

Asistan
Katılım
9 Aralık 2008
Mesajlar
346
Reaksiyon puanı
112
Puanları
43
Arkadasa ek tavsiyem; eger illa textchanged icinde kullanacaksan

1- verileri form acildiginda cek ve tablon elinde kalsin. daha sonra textchange de renklendirme islemlerini yapabilirsin. Yani sorguyu bir kere cek
2- anlamadigim sekilde neden 4 tane sorgu var. Bunlari tek bir sorgu haline getirebilirsin. or kullanimina bak sql de..
3- eger baglantinin sürekli acik kalmasi gerekiyorsa open-close yerine farkli bir yol izlemen lazim. Ama dediigm gibi senin durumunda gerek olmayacak. Sadece bir tane sorgu yap ve onu da form acilinca cagir. Kalan isleri db'den aldigin tablo üzerinden yap.
 

mustafabilir

Öğrenci
Katılım
23 Ağustos 2019
Mesajlar
12
Reaksiyon puanı
0
Puanları
1
Yaş
39
Bilgiler için teşekkür ederim.
Evet buton ile çağırdığımda kasma sorunu ortadan kalktı.
4 sorgunun nedeni aynı anda birden çok veriyi arama isteğimdir.
Bir sorun daha çıktı. Renklendirme tamam, fakat örneğin MUSTAFA yazdığımda mustafalar listeleniyor gerekli olan satırlar renkli görünüyor fakat MUSTAFA BİLİR yazdığımda (tam ad yazdığımda) yine mustafa bilir listeleniyor ama renkler iptal oluyor bu neden olur?
 

ozmen_celik

Software Developer
Katılım
3 Mart 2012
Mesajlar
571
Reaksiyon puanı
318
Puanları
63
Yaş
39
Merhaba sorun çözülmüş o yüzden ben sana başka tavsiyeler vermek isterim.

Mesela kendi classların olmalı böylelikle kodların düzenli olur mesela 1 db işlemleri diye class oluşturup db bağlantını , insert delete update select işlemlerini ordan yaaprsın tabi birde propertieslerini tanımladığın classlar oluşturursun ondan sonrada projene çağırıp eklersin ve onun üstünden gidersin. eğer öyle yaparsan çok düzenli kısa ve anlaşılır kod yazmış olursun. OOP araştırmanı tavsiye ederim tabi sonrada adonet tabi gerçek anlamda . Mesela bir çok ara yapmışsın ya onlar dahada kısalır 1-2 satır koda düşer hemde saan bir diğer tavsiyem textbox olarak kullanma onları değişkene ata ve sql münasebetinde değişkenleri haberleştir.

Tabi sadece tavsiye.

iyi forumlar
 

Mosb

Öğrenci
Katılım
10 Ocak 2020
Mesajlar
6
Reaksiyon puanı
0
Puanları
1
Yaş
34
Merhaba arkadaşlar; excell bana yetmediği için c sharp ı öğrenmeye çalışıyorum.

bir yazılım yapmaya çalışıyorum. normalde projem çok fazla veri içerdiği için ben aşağıda kısa bir örnek yaptım. textbax1 e girdiğim değer için yapılan son kaydın id'sini datagridview1 de buldurup, sonrada bu id nin karşılığı olan verileri datagridview2 ye yazdırdım.

adsız2 olarak yüklediğim resimlerde de göreceğiniz gibi. benim 1003 parsel numarasına ait 6 adet ruhsatım var. bunların 3 ü idari bina olarak 3 ü fabrika olarak verilmiş. En son isim değişikliği olarak hem idari binaya, hemde fabrikaya ruhsat verilmiş.
benim aşağıda yazdığım kodları ya düzelterek yada yeniden yazarak; 1003 parselin FABRİKA kullanımlı inşatına verilen son ruhsat bilgilerini başka bir datagridview de, İDARİ BİNA kullanımlı inşatına verilen son ruhsat bilgilerini ise başka bir datagridview de göstermek istiyorum.

son iki kaydı görüntülemeyi denedim lakin bazen idari bina için tek bir ruhsat düzenlenirken, fabrika binasına farklı tarihlerde peş peşe 3-4 tane tadilat ruhsatı kayıt olarak girilebiliyor.

yardımcı olursanız çok sevinirim.



namespace deneme_silinecek111
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SqlConnection baglanti = new SqlConnection(@"Data Source=.........");

private void Form1_Load(object sender, EventArgs e)
{

}

private void textBox1_TextChanged(object sender, EventArgs e)
{

baglanti.Open();
SqlDataAdapter da = new SqlDataAdapter("select max(id) from yapıruhsatıgiris where gpno like '%" + textBox1.Text + "%'", baglanti);
DataSet ds = new DataSet();
da.Fill(ds);

dataGridView1.DataSource = ds.Tables[0];

label1.Text = dataGridView1.Rows[0].Cells[0].Value.ToString();
SqlCommand komut1 = new SqlCommand("select id,kullanım,bbno,gpno,rvertar,rbittar from yapıruhsatıgiris where id like '%" + label1.Text + "%'", baglanti);
SqlDataAdapter da1 = new SqlDataAdapter(komut1);
DataSet ds1 = new DataSet();
da1.Fill(ds1);

dataGridView2.DataSource = ds1.Tables[0];

SqlCommand komut = new SqlCommand("select id,kullanım,bbno,gpno,rvertar,rbittar from yapıruhsatıgiris where gpno like '%" + textBox1.Text + "%'", baglanti);
SqlDataAdapter dar = new SqlDataAdapter(komut);
DataSet dst = new DataSet();
dar.Fill(dst);

dataGridView3.DataSource = dst.Tables[0];

baglanti.Close();
}
}
}
 

Ekli dosyalar

  • Adsız2.jpg
    Adsız2.jpg
    66.1 KB · Görüntüleme: 275
  • Adsız1.jpg
    Adsız1.jpg
    68.7 KB · Görüntüleme: 257
Üst