سؤال

أنا أستخدم التحكم في DataRepate WinForm من حزمة الطاقة VB.NET.

تتمثل جميع العناصر الموجودة في Repeater باستثناء عمود خانة الاختيار.

أريد التكرار عبر العناصر ومعرفة خانات الاختيار التي يتم فحصها.

لا يمكنني العثور على مجموعة من DataRepeaterItems على عنصر التحكم والمساعدة نادرة.

شكرا للمساعدة.

هل كانت مفيدة؟

المحلول

يمكنك التكرار من خلال قائمة عناصر التحكم (التي تم إنشاؤها من القالب)

  1. إعادة تسمية مربع الاختيار الخاص بك في DataRepater إلى "CheckBoxUnbound"

  2. استخدم الرمز أدناه

    private void button3_Click(object sender, EventArgs e)
    {
        int i = 0;
        CheckBox unboundCheckBox;
        foreach (Control c in dataRepeater1.Controls)
        {
            unboundCheckBox = c.Controls["checkBoxUnbound"] as CheckBox;
            if (unboundCheckBox != null && unboundCheckBox.Checked)
            {
                i++;
            }
        }
    
        Console.WriteLine("DEBUG: checked found: " + i);
    
    }
    

نصائح أخرى

تم طرح ذلك منذ فترة ولكن فقط في حالة البحث عن إجابة:

for (int i = 0; i < this.dataRepeater1.ItemCount; i++)
{
    this.dataRepeater1.CurrentItemIndex = i;

    CheckBox checkBox = (CheckBox)
                this.dataRepeater1.CurrentItem.Controls["controlName"];
    bool isChecked = checkBox.Checked;
}

يجعل هذا النهج أسهل بكثير في معالجة / قراءة أي عناصر تحكم ذات صلة على نفس عنصر المكرر.

لماذا لا تحقق فقط من DataSource of the DataRepeater؟

على سبيل المثال، لدي DataRepeater ملزمة إلى Bindingsource للأشخاص شاهد معالج زر

    private void Form1_Load(object sender, EventArgs e)
    {
        List<Person> persons = new List<Person>();
        persons.Add(new Person { Name = "Peter", IsLocal = true });
        persons.Add(new Person { Name = "Sepp", IsLocal = false });
        persons.Add(new Person { Name = "Franz", IsLocal = false });

        personBindingSource.DataSource = persons;
    }


    private void buttonCountCheckBox_Click(object sender, EventArgs e)
    {
        int i = 0;

        foreach (Person singlePerson in personBindingSource)
        {
            if (singlePerson.IsLocal)
            {
                i++;
            }

        }
        Console.WriteLine("DEBUG: checked found: " + i);
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top