通过 DataRepeater 进行迭代 (VB.Net PowerPack)
-
09-09-2019 - |
题
我正在使用 vb.net power pack 中的 winform datarepeater 控件。
除复选框列外,转发器上的所有项目都是只读的。
我想迭代这些项目并找出选中了哪些复选框。
我在控件上找不到数据重复项目的集合,并且帮助很少。
谢谢您的帮助。
解决方案
您可以遍历控件列表(从模板生成)
将 datarepeater 中的复选框重命名为“checkBoxUnbound”
使用下面的代码
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;
}
此方法使得它更容易处理/读取在同一转发器项目的任何相关的控制。
为什么不检查的DataRepeater的数据源?
E.g。我有绑定到BindingSource的起诉一个的DataRepeater 看到按钮处理程序
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);
}
不隶属于 StackOverflow