2011-01-07 83 views
0

嗨,任何人都可以告诉我怎么能找到DataList控件内的DataList?它的错误对象没有设置为实例。如何在Datalist1中查找控件?

我发现的控制是这样的:

DataList的DL =((DataList的)(DataList1.FindControl( “DataList2”)));

这是正确的方法吗?

回答

0

这取决于当你想找到控制和控制。如果你只想得到他们所有的人,你可以循环下面的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 
    } 
    } 
} 
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; 
       } 

      } 
     } 
    } 
+0

你可以告诉我什么是GetDeepControlsByType是它任何接口或方法m混淆 – 2011-01-07 17:03:37