嗨,任何人都可以告诉我如何找到DataList控件内的DataList?它将Error Object设置为Instance。
我正以这种方式找到控件:DataList dl =((DataList)(DataList1.FindControl(“DataList2”)));
这是正确的方法吗?
答案 0 :(得分:0)
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;
}
}
}
}
答案 1 :(得分:0)
这取决于您何时想要找到控件和哪个控件。如果你只想获得所有这些,你可以遍历下面的DataList项。假设您要访问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
}
}
}