MasterPage

1. 마스터 페이지 안에서 컨트롤러 찾기.
this.Master.FindControl("패널").FindControl("컨트롤")...
마스터 페이지를 사용하였기에 경로상 ContentPlaceHolder단에서 this에서 바로 찾아지지 않는다 ->상위 마스터페이지를 찾은후, 다시 컨텐츠를 찾는다
ex) Repeater List_Product = (Repeater)Page.Master.FindControl("cph").FindControl(partTmp)

--------------------------------------------------------------------------------------------------------------------------
2, MasterPage 의 속성(Properties) 다루기
MasterPage 에 public method 를 생성한다.
예로,

public String Name
{
     get {return TextBox1.Text;}
     set {TextBox1.Text = value;}  
}

이 public method 를 ContentPage 에서 읽게 하려면 ContentPage 에 @MasterType 선언을 해주어야 한다.
   1:  <%@ MasterType virtualPath="~/MasterPage.master" %>이렇게 선언을 한 뒤에 ContentPage 의 코드 View 에서 Master Class 를 사용하여 객체에 접근할 수 있다.

protected void Button1_Click(object Sender, EventArgs e)  \
{  
     TextBox2.Text = Master.Name;   
}
속성은 이렇게 다루어지는 반면에,
Control 은 Master Class 의 FindControl 로 접근이 가능하다. 코드 예제로 쉽게 설명이 가능하다.

Label _Brand = (Label)Master.FindControl("Brand");   
_Brand.Text = "This text is from Content Page";
"Brand"라는 아이디의 Control 을 Master Page 에서 찾은 후에 새로운 Label 객체에 할당해 주었다. 그런 후에 속성들을 다룰 수 있게 된다.

--------------------------------------------------------------------------------------------------------------------------
3. MasterPage와 ContentPage 간 접근

*.master에 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 하나 박아두고...
당연히 <asp:ContentPlaceHolder> 박아둬야겠지???

*.aspx 페이지에서....... 버튼 넣어두고... 클릭 이벤트 처리....

protected void Button1_Click(Object sender, EventArgs e)

{
   //MasterPage의 TextBox1이라는 아이디를 갖는 박스를 가져와
   TextBox txt = (TextBox)Master.FindControl("TextBox1");

   // 가져온 박스의 문자열을 컨텐츠페이지의 Label1 에다가 뿌려준다는 내용
   Label1.Text = txt.Text;
}
반대의 경우는....
ContentPlaceHolder1.FindControl()을 쓰면 되더라구...

--------------------------------------------------------------------------------------------------------------------------
4. MasterPage, Page, UserControl 간 접근 방법 
Asp.Net2.0 레이아웃은 마스터 페이지에 UserControl 과 ContentPlaceHolder 를 둔다.
1. UserControl 에서 Page 컨트롤에 접근하기
ContentPlaceHolder cph = (ContentPlaceHolder)Parent.FindControl("ContentPlaceHolder1");
HtmlInputText pageText = (HtmlIn.putText)cph.FindControl("TextBox1");
pageText.Value = "UserControl=>Page Test";

2. Page 에서 UserControl  컨트롤 접근하기
UserControl Left = (UserControl)Master.FindControl("Left1");
HtmlInputText userControlText = (HtmlInputText)Left.FindControl("TextBox1");
userControlText.Value = "Page=>UserControl Test";

- 속성 접근
UserControls.Left Leftcontrol = (UserControls.Left)Left;
Left2.LoginChk = "aaa";

3. MasterPage 에서 Page 컨틀롤 접근하기
HtmlInputText pageText = (HtmlInputText)MainContent.FindControl("TextBox1");

pageText.Value = "Master=>Pge Test";

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



Previous
Next Post »