Soran
Repeater İçindeki CheckBox'a Erişme

Genel Tartışma
-
İç içe Repetar kullandım.
İçteki Repeater'de CheckBoxlar var.
Bir Buton koyup Repeaterin içindeki Controlslerden Checkbox'a ulaşmak istiyorum ama olmuyor ?
ArrayList itemCheked = new ArrayList(); for (int i = 0; i < rp_alt_tur.Controls.Count; i++) { if (rp_alt_tur.Controls[i] is CheckBox) { CheckBox chk = (CheckBox)rpt_giyim.Controls[i]; if (chk.Checked) { itemCheked.Add(chk.Text); } } }
Not: Butondan başka yollarda önerebilirsiniz. İtemCommand ile de yapamadım...
- Düzenleyen benna21 17 Nisan 2017 Pazartesi 16:12
- Değiştirilmiş Tür Kyamuran SalibryamMicrosoft contingent staff, Moderator 24 Nisan 2017 Pazartesi 11:39
Tüm Yanıtlar
-
if (rp_alt_tur.Controls[i] is CheckBox) { CheckBox chk = (CheckBox)rpt_giyim.Controls[i]; if (chk.Checked) { itemCheked.Add(chk.Text); } }
if satırında rp_alt_tur.Controls[i] kontrolü CheckBox türünde mi kontrol edip
hemen sonrasında rpt_giyim.Controls[i] kontrolünü CheckBox olarak alıyorsunuz.
Burada hata olmalı...
-
foreach (System.Windows.Forms.Control XEleman in XControl.Controls)
{
if (XEleman is System.Windows.Forms.CheckBox)
{
if (XEleman.Checked){ yapacagın işlemin}}
}Bu şekilde yapabilirsin. ama böyle adını veya hangisinin checked oldugunu bilemezsin checkbox'larına isim vermedinmi o şekilde daha rahat ulaşırsın.
-
foreach (System.Windows.Forms.Control XEleman in XControl.Controls)
{
if (XEleman is System.Windows.Forms.CheckBox)
{
if (XEleman.Checked){ yapacagın işlemin}}
}Bu şekilde yapabilirsin. ama böyle adını veya hangisinin checked oldugunu bilemezsin checkbox'larına isim vermedinmi o şekilde daha rahat ulaşırsın.
-
if (rp_alt_tur.Controls[i] is CheckBox) { CheckBox chk = (CheckBox)rpt_giyim.Controls[i]; if (chk.Checked) { itemCheked.Add(chk.Text); } }
if satırında rp_alt_tur.Controls[i] kontrolü CheckBox türünde mi kontrol edip
hemen sonrasında rpt_giyim.Controls[i] kontrolünü CheckBox olarak alıyorsunuz.
Burada hata olmalı...
Düzelttim hocam ama nedense zaten checkboxları bir control olarak görmüyor...
11 checkbox var for 2 defa dönüyor...
-
-
Repeater.Controls repeater'ın item kolleksiyonunu barındırır.
Siz CheckBox'lara erişmek için;
Repeater.Controls[i].FindControl("Buraya CheckBox ID yazılacak")
kullanmalısınız...
Hocam bana iç içe repeaterin olduğu, itemleri kontrol ettirecek bir döngü örneği atabilir misiniz?
-
Kendi örneğinizden yola çıkarsak;
ArrayList checkedItems = new ArrayList();
Control fControl;
CheckBox cBox; foreach (Control ctrl in rp_alt_tur.Controls) {
fControl = ctrl.FindControl("chkBox"); //chkBox rpt_alt_tur içindeki ChekBox'ın ID
if (fControl is CheckBox) {
cBox = (CheckBox)fControl;
if (cBox.Checked)
checkedItems.Add(cBox.Text);
} }
-
Kendi örneğinizden yola çıkarsak;
ArrayList checkedItems = new ArrayList();
Control fControl;
CheckBox cBox; foreach (Control ctrl in rp_alt_tur.Controls) {
fControl = ctrl.FindControl("chkBox"); //chkBox rpt_alt_tur içindeki ChekBox'ın ID
if (fControl is CheckBox) {
cBox = (CheckBox)fControl;
if (cBox.Checked)
checkedItems.Add(cBox.Text);
} }
Hocam nedense son 2 eleman için dönüyor döngü sadece resim ile anlatayım.
http://i.hizliresim.com/W0RdX4.png
1.En foreach en alttaki alt eşofman ve üst eşofman için dönüyor.
2. hocam birde isPostBack kullandığımda "nesne başvurusu bir nesnenin örneğine ayarlanmadı" hatasını alıyorum döngü dönmeden... Buton ile o chekedları çekmem için ispostback kullanmam lazım, veya başka bir öneriniz var mı ?- Düzenleyen benna21 22 Nisan 2017 Cumartesi 13:55
-
ArrayList checkedItems = new ArrayList(); // Bu kısım IsPostBack'in dışında kalsın;
if (IsPostBack)
{
Control rptControl;
Control fControl;
CheckBox cBox;
foreach (Control giyim in rpt_giyim.Controls)
{
rptControl = giyim.FindControl("rpt_alt_tur");
if (rptControl is Repeater)
{ foreach (Control ctrl in rptControl.Controls) {
fControl = ctrl.FindControl("chkBox"); //chkBox rpt_alt_tur içindeki ChekBox'ın ID
if (fControl is CheckBox) {
cBox = (CheckBox)fControl;
if (cBox.Checked)
checkedItems.Add(cBox.Text);
} }
}
}
}
- Düzenleyen MuratAKSARAY 22 Nisan 2017 Cumartesi 14:24
-
ArrayList checkedItems = new ArrayList(); // Bu kısım IsPostBack'in dışında kalsın;
if (IsPostBack)
{
Control rptControl;
Control fControl;
CheckBox cBox;
foreach (Control giyim in rpt_giyim.Controls)
{
rptControl = giyim.FindControl("rpt_alt_tur");
if (rptControl is Repeater)
{ foreach (Control ctrl in rptControl.Controls) {
fControl = ctrl.FindControl("chkBox"); //chkBox rpt_alt_tur içindeki ChekBox'ın ID
if (fControl is CheckBox) {
cBox = (CheckBox)fControl;
if (cBox.Checked)
checkedItems.Add(cBox.Text);
} }
}
}
}
Hocam acaba şu konuda yardımcı olur musunuz ?
https://social.msdn.microsoft.com/Forums/tr-TR/ec883c84-bd54-4dd2-9df4-63742802f81d/veriyi-diziye-ekleyemiyorum?forum=csharptr
Enteresan bir hata alıyorum.
-