我正在使用vb.net power pack的winform datarepeater控件。迭代通過DataRepeater(VB.Net PowerPack)
中繼器上的所有項目都是隻讀的,複選框列除外。
我想迭代項目並找出哪些複選框被選中。
我無法在控件上找到datarepeateritems的集合,並且幫助很少。
感謝您的幫助。
我正在使用vb.net power pack的winform datarepeater控件。迭代通過DataRepeater(VB.Net PowerPack)
中繼器上的所有項目都是隻讀的,複選框列除外。
我想迭代項目並找出哪些複選框被選中。
我無法在控件上找到datarepeateritems的集合,並且幫助很少。
感謝您的幫助。
你可以通過控件列表迭代(從模板生成的)
重命名複選框中的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);
}
爲什麼不直接檢查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);
}
這是問前一陣子但以防萬一其他人正在尋找一個答案:
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;
}
這種方法使得它更容易處理/在同一個中繼器的物件讀取任何相關的控件。
該複選框沒有綁定,也不是數據源的一部分。它是第一列,用於檢查一個動作,例如刪除全選。 – 2010-01-03 18:51:24
查看其他答案 – 2010-01-04 01:55:22