我正在使用来自 vb.net 电源组的 winform datarepeater 控件。
中继器上的所有项目都是只读的,除了复选框列。
我想遍历这些项目并找出选中了哪些复选框。
我在控件上找不到数据重复项的集合,并且帮助很少。
谢谢您的帮助。
我正在使用来自 vb.net 电源组的 winform datarepeater 控件。
中继器上的所有项目都是只读的,除了复选框列。
我想遍历这些项目并找出选中了哪些复选框。
我在控件上找不到数据重复项的集合,并且帮助很少。
谢谢您的帮助。
不久前有人问过这个问题,但以防万一其他人正在寻找答案:
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 绑定到 Persons 的 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);
}
您可以遍历控件列表(从模板生成)
将数据中继器中的复选框重命名为“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);
}