2011-01-19 3 views
1

나는 MasterPage에 두 개의 UserControl을 가지고 있습니다. DataEntryUC에는 여러 TextBox와 DropDownList가 있습니다. NavSaveUC에는 탐색 버튼이 있습니다. 사용자가 탐색 버튼을 클릭하면 NavSaveUC UserControl에서 DataEntryUC에 입력 된 데이터를 저장합니다.하나의 UserControl에서 다른 UserControl의 TextBox를 참조하는 방법

저장 프로 시저 이름, 컨트롤 이름, 컨트롤 형식, SqlDbTypes 등을 포함하는 내 DB에 테이블이 두 개 있습니다. DataEntryUC와 관련이 있습니다.

NavSaveUC에서 DataEntryUC에있는 텍스트 상자를 어떻게 참조합니까?

저는 NavSaveUC에서 다음 코드를 사용해 왔습니다.

Dim MyControlName = "txtFirstName" 
Dim MyControlType = "TextBox" 
Dim MyStringValue as String 
Dim tmpTxtControl as TextBox 
Dim tmpDdlControl as DropDownList 

Select Case MyControlType 
    Case "TextBox" 
     tmpTxtControl = CType(Page.FindControl(MyControlName, TextBox) 
     MyStringValue = tmpTxtControl.Text     
    Case "DropDownList" 
     tmpDdlControl = CType(Page.FindControl(MyControlName, DropDownList) 
     MyStringValue = tmpDdlControl.SelectedValue 
End Select 

감사합니다.

답변

1

텍스트 상자를 사용자 정의 컨트롤의 속성으로 노출시키고 그런 식으로 액세스하십시오. 이러한 유형의 종속성은 모범 사례가 아닙니다.

+1

예, 해당 컨트롤을 속성으로 표시하는 것이 쉽고 & 좋은 방법입니다. 예를 들면 다음과 같습니다 .http : //www.dotnetcurry.com/ShowArticle.aspx? ID = 155 – AspNetDev

+0

표시된 예제를 따르면 해당 페이지의 소스 코드에서 컨트롤을 참조하고 있습니다. (<% @ Reference VirtualPath = "~/ControlB.ascx"%>) 여러 개의 userControls에 대해이 버튼 탐색 컨트롤을 사용할 것입니다. 내 NaveSaveUC와 함께 사용되는 모든 사용자 정의 컨트롤을 참조해야합니까? – crjunk

+0

버튼이 상주하는 페이지에서 관련 사용자 컨트롤을 참조하기 만하면됩니다. 또한 사용자 컨트롤은 다른 곳에서 사용되는 경우 수동으로 배포해야합니다. – IrishChieftain

1

한 사용자 정의 컨트롤이 다른 사용자 정의 컨트롤 안에 포함 된 경우 해당 컨트롤을 컨트롤의 속성으로 표시하기 만하면됩니다. 그러나 두 사용자 컨트롤이 같은 페이지에 별도로 존재하는 경우 컨트롤 간의 종속성을 피하기 위해 컨트롤이 서로 직접 상호 작용해서는 안됩니다.

대신 페이지를 두 컨트롤 사이의 중개자로 사용해야합니다. 예를 들어, NavSaveUC는 작업 수행시 이벤트 인수에 데이터가있는 이벤트를 발생시킬 수 있습니다. 이 페이지는 NavSaveUC에서 이벤트를 처리 할 수 ​​있습니다. DataEntryUC가 텍스트 상자 또는 텍스트 상자의 텍스트 속성을 공용 속성으로 노출하면 페이지의 이벤트 핸들러는 NavSaveUC의 이벤트 인수에서 데이터를 가져와 DataEntryUC의 텍스트 상자에 배치 할 수 있습니다.

관련 문제