2009-10-28 102 views

回答

3

從你的頁面,你可以做

var checkboxes = (CheckBoxList)userControl1.FindControl("checkBoxList1"); 

但在我的腦海裏更好的解決辦法是通過公開屬性或方法的檢查項目。

在用戶控制

public string[] CheckedItems { 
    get { 
     List<string> checkedItems = new List<string>(); 
     foreach (ListItem item in checkbox1.Items) 
      checkedItems.Add(item.Value); 

     return checkedItems.ToArray(); 
    } 
} 

然後在頁面

var checkedItems = userControl1.CheckedItems; 

你也可以只返回屬性checkbox1.Items,但是這不是良好的封裝。

+0

對,這就是我想做的事 - 揭露檢查項目通過財產。 – somacore 2009-10-28 19:52:53

+0

我改變了我的代碼來使用屬性而不是方法。 – Bob 2009-10-28 20:07:57

+0

太棒了。謝謝! – somacore 2009-10-28 20:22:33

1

如果您使用的是.NET 3.5,你可以創建一個使用LINQ返回剛纔所選擇的值的IList的一個只讀屬性:

public IList<string> SelectedItems{ 
     get { 
      return checkbox1.Items.Cast<ListItem>.Where(i => i.Selected).Select(j => j.Value).ToList(); 
     } 

    } 
+0

只能使用.net 3.0 = \ – somacore 2009-10-28 20:23:12

相關問題