protected void Button1_Click(object sender, EventArgs e) { string sonuc = ""; foreach (object eleman in this.Controls) { if (eleman is CheckBox) { if ((eleman as CheckBox).Checked==true) { sonuc = sonuc + " " + ((CheckBox)eleman).Text; } } } Response.Write(sonuc); }
1 - Foreach ile tüm sayfayı gezip elemanları teftiş ettik
2 - If döngüsünde foreach' ten tek tek gelen elemanların türünün checkbox olup olmadığını kontrol ettik.
3 - Burada şöyle bir hata var; foreach döngüsünde kullandığımız this.Controls deyimi bize sayfadaki ilk kontrolü, yani form nesnesini verecek. Bu yüzden seçilen ilk child checkbox değil form nesnesi olacağından if döngümüz çalışmayacak. Bunu önlemek için tüm checkbozlarımızı bir panel içine alıyoruz ve foreach içinde Panel.Controls ifadesini kullanıyoruz. Kodumuzun yeni hali:
protected void Button1_Click(object sender, EventArgs e) { string sonuc = ""; foreach (object eleman in Panel1.Controls) { if (eleman is CheckBox) { if ((eleman as CheckBox).Checked==true) { sonuc = sonuc + " " + ((CheckBox)eleman).Text; } } } Response.Write(sonuc); }
Burada eleman as Checkbox tabiri Cast olayıdır. Yani elemanın tipi checkbox oldu diyoruz. Aynı işlemi (Checkbox)eleman şeklinde de yapabilirdik. Fakat kullanışlı olanı as deyimini kullanmaktır.
Artık foreach döngüsü ile sayfadaki Checkboxları yakalayabiliyoruz. Daha sonra gelen checkboxın seçili olup olmama durumuna checked kontrolü ile bakıyoruz. Ve son olarak seçili olan tüm checkboxları sonuc değerine ekliyoruz. Sonuç:
0 yorum:
Yorum Gönder