2009-02-26 80 views
0

我正在使用vb.net power pack的winform datarepeater控件。迭代通過DataRepeater(VB.Net PowerPack)

中繼器上的所有項目都是隻讀的,複選框列除外。

我想迭代項目並找出哪些複選框被選中。

我無法在控件上找到datarepeateritems的集合,並且幫助很少。

感謝您的幫助。

回答

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

爲什麼不直接檢查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); 
    } 
+0

該複選框沒有綁定,也不是數據源的一部分。它是第一列,用於檢查一個動作,例如刪除全選。 – 2010-01-03 18:51:24

+0

查看其他答案 – 2010-01-04 01:55:22

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

這種方法使得它更容易處理/在同一個中繼器的物件讀取任何相關的控件。