2009-10-28 62 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

相关问题