none
Birden fazla CheckBox ın BackGround değerlerini değiştirme RRS feed

  • Soru

  • Merhaba arkadaşlar;

    Ben ASP.NET te ki bir projemde 40 tane checkbox kullanıyorum.

    checkbox ların ID'si (k1,k2,k3,.......,k40 olarak isimlendirdim)

    veritabanına bu checkbox ların isimlerini kaydediyorum.

    Örneğin; kaydettiğim isim = "k35" gibi.

    Sorum ise bu kaydettiğim isimi okuyarak o isme ait checkbox' ın background değerini değiştirmek.

    C# Form Application da şu şekilde kullanıyorum;

    if (this.Controls[veriTabanindanGelenIsim] is CheckBox) this.Controls[veriTabanindanGelenIsim].BackColor = Color.White;

    Yalnız bu işlemi ASP.NET Projemde nasıl kullanabilirim.

    Şimdiden teşekkürler.

    İyi günler.


    30 Nisan 2013 Salı 14:06

Yanıtlar

  • Merhaba.

    Öncelikle cevaplarınız için teşekkür ederim.

    Sn. GÇ teşekkür ederim foreach ile kullandım ve oldu önce kullanmayı düşündüm ama nasıl yapacağım aklıma gelmedi sonda dank etti.

    Sn. Önay YALÇINER sizin dediğiniz gibi kullanmaya çalışmıştım ama dediğiniz gibi Null Referance hatası aldım. Neden veritabanına kaydettiğimi sorarsanız. Otobus Firması Projesi için otobus koltuk numaralarını veri tabanına kaydediyorum. Sefer yüklenirkende eğer kayıtlı koltuk numarası varsa ona göre Checkbox ların arka plan, yazı ve Enable özellikleriniz değiştiriyorum.

    Sorunun cevabını ise koltuk numarası alan bir method oluşturarak içerisine bir CheckBox dizisi olıştırdum bu diziye checkboxların isimlerini ekledim daha sonra forech ile bu dizi içerisinde dolaşarak veritabanından okuduğum ismi methoda yönlendirerek özelliklerinin değişmesini sağladım.

    Kodlar ise;

    public void Yerlesim(string KoltukAdi) //Parapetre olarak veritabanından göndermiş olduğum koltuk ismi alıyor.
        {	//Buradaki k1, k2, k3,...,k46 CheckBoxların isimleridir.
            CheckBox[] Koltuklar = { k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46 };
            foreach (CheckBox Koltuk in Koltuklar)
            {
                if (Koltuk.ID == KoltukAdi)
                {
                    Koltuk.BackColor = Color.FromArgb(255, 102, 102, 102);
                    Koltuk.ForeColor = Color.White;
                    Koltuk.ToolTip = "Dolu koltuk";
                    Koltuk.Enabled = false;
                }
            }
        }



    Method kullanım;

    Yerlesim(VeritabanindanGelenKoltukNo);

    Şimdi ise Önay YALÇINER in yöntemini this koymadan ve if kullanmadan yazarsam hata almıyorum ve çalışıyor.

    Kodlar;

    ((CheckBox)FindControl(VeriTabanindanGelenKoltukNo)).Checked = true;
    ((CheckBox)FindControl(VeriTabanindanGelenKoltukNo)).BackColor = Color.White;

    Yardımlarınız için teşekkür ederim

    İyi günler.


    13 Mayıs 2013 Pazartesi 12:28

Tüm Yanıtlar

  • foreach kullanabilirsiniz ve foreach içinde checkboxları döndürebilir ve arkaplanlarını değiştirebilirsiniz...

    Ms. Destiny - Lies/Bout Me (Sexy Body Paint Video)

    Scope Piskopos - Ben 46 Raporlu Bir Deliyim

    Ben başarısız olmadım, sadece işin bu şekilde yapılmayacağının bir çok yolunu buldum ve işin nasıl yapılacağına da bir çok defa yaklaştım.

    30 Nisan 2013 Salı 15:52
  • Checkbox'ların isimlerini neden database e kaydettiğinizi inanın kafam almadı ama;

    if (this.FindControl(veriTabanindanGelenIsim) is CheckBox)
      ((CheckBox)this.FindControl(veriTabanindanGelenIsim)).BackColor = Color.White;

    şeklinde id si lie ulaşabilirsiniz. 

    Not: Dikkat bulamazsa null reference hatası alabilirsiniz.


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

    1 Mayıs 2013 Çarşamba 07:55
    Moderatör
  • Merhaba.

    Öncelikle cevaplarınız için teşekkür ederim.

    Sn. GÇ teşekkür ederim foreach ile kullandım ve oldu önce kullanmayı düşündüm ama nasıl yapacağım aklıma gelmedi sonda dank etti.

    Sn. Önay YALÇINER sizin dediğiniz gibi kullanmaya çalışmıştım ama dediğiniz gibi Null Referance hatası aldım. Neden veritabanına kaydettiğimi sorarsanız. Otobus Firması Projesi için otobus koltuk numaralarını veri tabanına kaydediyorum. Sefer yüklenirkende eğer kayıtlı koltuk numarası varsa ona göre Checkbox ların arka plan, yazı ve Enable özellikleriniz değiştiriyorum.

    Sorunun cevabını ise koltuk numarası alan bir method oluşturarak içerisine bir CheckBox dizisi olıştırdum bu diziye checkboxların isimlerini ekledim daha sonra forech ile bu dizi içerisinde dolaşarak veritabanından okuduğum ismi methoda yönlendirerek özelliklerinin değişmesini sağladım.

    Kodlar ise;

    public void Yerlesim(string KoltukAdi) //Parapetre olarak veritabanından göndermiş olduğum koltuk ismi alıyor.
        {	//Buradaki k1, k2, k3,...,k46 CheckBoxların isimleridir.
            CheckBox[] Koltuklar = { k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k40, k41, k42, k43, k44, k45, k46 };
            foreach (CheckBox Koltuk in Koltuklar)
            {
                if (Koltuk.ID == KoltukAdi)
                {
                    Koltuk.BackColor = Color.FromArgb(255, 102, 102, 102);
                    Koltuk.ForeColor = Color.White;
                    Koltuk.ToolTip = "Dolu koltuk";
                    Koltuk.Enabled = false;
                }
            }
        }



    Method kullanım;

    Yerlesim(VeritabanindanGelenKoltukNo);

    Şimdi ise Önay YALÇINER in yöntemini this koymadan ve if kullanmadan yazarsam hata almıyorum ve çalışıyor.

    Kodlar;

    ((CheckBox)FindControl(VeriTabanindanGelenKoltukNo)).Checked = true;
    ((CheckBox)FindControl(VeriTabanindanGelenKoltukNo)).BackColor = Color.White;

    Yardımlarınız için teşekkür ederim

    İyi günler.


    13 Mayıs 2013 Pazartesi 12:28