通过DataRepeater迭代(VB.Net PowerPack)

时间:2009-02-26 16:46:06

标签: vb.net winforms datarepeater powerpacks

我正在使用来自vb.net power pack的winform datarepeater控件。

转发器上的所有项目都是只读的,但复选框列除外。

我想迭代这些项目并找出选中的复选框。

我无法在控件上找到datarepeateritems的集合,而且帮助很少。

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

这是前一段时间被问到的,以防万一其他人正在寻找答案:

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

这种方法可以更轻松地处理/读取同一转发器项目上的任何相关控件。

答案 1 :(得分:0)

为什么不检查datarepeater的数据源?

E.g。我有一个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);
    }

答案 2 :(得分:0)

您可以遍历“控件”列表(从模板生成)

  1. 将datarepeater中的复选框重命名为“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);
    
    }
    
相关问题