通过DataRepeater进行迭代(VB.Net PowerPack)
我正在使用vb.net电源包中的winform datarepeater控件 除复选框列外,中继器上的所有项目都是只读的 我想遍历这些项目,并找出选中了哪些复选框 我在控件上找不到datarepeateritems的集合,并且缺少帮助通过DataRepeater进行迭代(VB.Net PowerPack),vb.net,winforms,datarepeater,powerpacks,Vb.net,Winforms,Datarepeater,Powerpacks,我正在使用vb.net电源包中的winform datarepeater控件 除复选框列外,中继器上的所有项目都是只读的 我想遍历这些项目,并找出选中了哪些复选框 我在控件上找不到datarepeateritems的集合,并且缺少帮助 谢谢您的帮助。为什么不检查datarepeater的数据源呢 例如,我将一个datarepeater绑定到个人的Bindingsource 请参阅按钮处理程序 private void Form1_Load(object sender, EventArgs
谢谢您的帮助。为什么不检查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);
}
private void Form1\u加载(对象发送方,事件参数e)
{
列表人员=新列表();
添加(新人物{Name=“Peter”,IsLocal=true});
添加(新的Person{Name=“Sepp”,IsLocal=false});
添加(新人物{Name=“Franz”,IsLocal=false});
personBindingSource.DataSource=个人;
}
私有无效按钮计数复选框\单击(对象发送者,事件参数e)
{
int i=0;
foreach(personBindingSource中的PersonSinglePerson)
{
if(单人。本地)
{
i++;
}
}
Console.WriteLine(“调试:选中并找到:+i”);
}
您可以遍历控件列表(由模板生成)
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;
}
for(int i=0;i
这种方法使处理/读取同一中继器项上的任何相关控件变得更加容易。复选框未绑定,也不是数据源的一部分。它是第一列,用于检查操作,例如删除所有选定项。我对此进行了测试,如果您的项目多于适合我控制的项目,则此操作将不起作用。这意味着只有通过滚动才能看到的控件将不会出现在
dataRepeater1.controls
中@彼得·格法德,有什么想法吗?嗯。。。现在不行。也许有另一种方法可以迭代所有控件。我原以为“.Controls”是一个可能的解决办法:一个列表
,集合
或类似的东西跟踪可能的更改(例如行选择-我支持筛选结果,所以这个策略对我有效)我有很多事件,比如DataRepeater\u item单击ouDataRepeater\u DrawItem
,以正确地显示/更新元素。迭代时,我迭代列表/集合,而不是DataRepeater
本身。这不是一个优雅的解决方案,但确实有效。