2011-01-07 69 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