2011-01-07 6 views
0

こんにちは、私はどのようにDataListコントロール内にあるDataListを見つけることができますか?Datalist1でコントロールを見つけるには?

iは、このような制御を見つけています:

のDataList DL =((DataListコントロール)(DataList1.FindControl( "DataList2")));

正しいですか?

答えて

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 
    } 
    } 
} 
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が何であるかを教えてplzは可能それがループの多くのように見える任意のインタフェースやメソッドmの混同 –

+0

です。コントロールが複数のレイヤーに深くネストされている場合は、同じ子コントロールを何回か反復します。再帰なしでこれを行う方が早いかもしれないように見えます。そして、IEnumerableを1つだけ作成します。 –

+0

sory私はそれを得た。このジェネリックメソッドの名前.... M try –