2011-01-07 9 views
0

안녕하세요 누구나 DataList 컨트롤 안에있는 DataList를 찾을 수있는 방법을 알려줄 수 있습니까? 그 인스턴스에 설정되지 않은 Error Object를 제공합니다.Datalist1에서 컨트롤을 찾는 방법은 무엇입니까?

제가 이 제어 방법을 발견하고 :

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

당신은 어떤 인터페이스 또는 메소드 m 루프 많은처럼 보이는 –

+0

을 혼동 무엇 GetDeepControlsByType입니다 말해 plz 수 있습니다. 컨트롤이 여러 레이어에 중첩되어 있으면 동일한 자식 컨트롤을 여러 번 반복합니다. 재귀없이이 작업을 수행하는 것이 더 빠를 것 같고 하나의 IEnumerable 만 만듭니다. –

+0

sory 내가 알아서 해. 이 일반적인 방법의 이름 .... M 시도 –

관련 문제