如何在Datalist1中查找控件?
问题描述:
嗨,任何人都可以告诉我怎么能找到DataList控件内的DataList?它的错误对象没有设置为实例。如何在Datalist1中查找控件?
我发现的控制是这样的:
DataList的DL =((DataList的)(DataList1.FindControl( “DataList2”)));
这是正确的方法吗?
答
这取决于当你想找到控制和控制。如果你只想得到他们所有的人,你可以循环下面的DataList Items。假设您想访问DataList中的CheckBox。
foreach (DataListItem item in DataList1.Items)
{
if (item.ItemType == ListItemType.Item ||item.ItemType == ListItemType.AlternatingItem)
{
CheckBox chb=(CheckBox) item.FindControl("CheckBox1");
if (chb!= null)
{
//you can access chb.Checked value
}
}
}
答
DataList2是直接在DataList1中,还是在DataList1的子组件内?
FindControl
方法不会深入搜索控件。
我前一段时间写了这样做的方法,柜面它的使用的,我会在这里发布:
public static IEnumerable<Control>
GetDeepControlsByType<T>(this Control control)
{
foreach(Control c in control.Controls)
{
if (c is T)
{
yield return c;
}
if(c.Controls.Count > 0)
{
foreach (var x in c.GetDeepControlsByType<T>())
{
yield return x;
}
}
}
}
你可以告诉我什么是GetDeepControlsByType是它任何接口或方法m混淆 – 2011-01-07 17:03:37