2010-03-03 8 views
1

ASP.net에 WebUserControl을 만들고 나중에 해당 컨트롤의 요소에 액세스 할 수 있기를 원합니다. 함께 액세스하려고하지만 액세스 할 때. 예를 들어 컨트롤에 CheckBox와 테이블을 추가 한 다음 CheckBox를 찾고 체크 표시가 있었는지 확인한 후 체크 표시가있는 경우 TextBox에서 값을 가져옵니다.WebUserControl의 요소 찾기 및 액세스

현재 사용자 지정 컨트롤에서 페이지에로드되는 모든 항목이 있지만 페이지의 컨트롤을 반복 할 때 WebUserControl 유형에 대한 컨트롤이 나타나지 않습니다. 모든 컨트롤은 페이지에 있지만 별도의 ASP.net 컨트롤로 존재합니다.

내가이 잘못에 대해 생각하고 있습니까? 이 작업을 수행하는 더 좋은 방법이 있습니까?

잘 설명하지 못했습니다. 명확한 질문을 보내 주시기 바랍니다.

답변

2

사용자가 원하는 기능을 수행하거나 원하는대로 동작하도록 공용 속성이나 기능을 만들어 사용자 정의 컨트롤 기능을 노출해야합니다. 따라서 귀하의 경우 예를 들어, 당신은 (당신은 또한 기능을 할 수있는)와 같은 사용자 컨트롤의 속성을 가질 수있다 :

public List<string> SomeValues 
{ 
    get 
    { 
     // return null if checkbox is not checked, you could just as easily return an empty list. 
     List<string> lst = null; 
     if (yourCheckBox.Checked) 
     { 
      lst = new List<string>(); 

      // You could have something that iterates and find your controls, remember you 
      // are running this within your user control so you can access all it's controls. 
      lst.Add(yourTextBox1.Text); 
      lst.Add(yourTextBox2.Text); 
      lst.Add(yourTextBox3.Text); 
      // etc... 
     } 
     return lst; 
    } 
} 

그런 다음 페이지에서는 사용자 컨트롤을 액세스하고 값을 얻기 위해이 속성을 호출 할 수 있습니다 :

// assuming you defined your usercontrol with the 'yourUserControl' ID 
List<string> lst = yourUserControl.SomeValues; 

열쇠는 당신이 그렇게 그것이 세부 사항 또는 구현의에 대해에 대해 알 필요가 없다 사용하고 어떤 사용자 컨트롤에서 원하는 노출하는 것입니다. 다른 컨트롤처럼 사용할 수 있어야합니다.

+0

이것은 내가 누락 된 부분이었습니다. 감사합니다. – mwright