Итерация через DataRepeater (VB.Net PowerPack) - PullRequest
0 голосов
/ 26 февраля 2009

Я использую элемент управления переноса данных winform от блока питания vb.net.

Все элементы на повторителе доступны только для чтения, кроме столбца с флажком.

Я хочу перебрать элементы и выяснить, какие флажки отмечены.

Я не могу найти коллекцию datarepeateritems на контроле, и помощь недостаточна.

Спасибо за помощь.

Ответы [ 3 ]

2 голосов
/ 02 декабря 2011

Это было задано некоторое время назад, но на всякий случай, если кто-то еще ищет ответ:

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;
}

Этот подход значительно упрощает обработку / чтение любых связанных элементов управления на одном и том же элементе повторителя.

0 голосов
/ 04 января 2010

Вы можете перебрать список элементов управления (сгенерированный из шаблона)

  1. Переименуйте ваш флажок в датере в "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);
    
    }
    
0 голосов
/ 02 января 2010

Почему бы просто не проверить источник данных ретранслятора данных?

например. У меня есть источник данных, связанный с Bindingsource for Persons Смотрите обработчик кнопок

    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);
    }
...