PC Review


Reply
Thread Tools Rate Thread

Changing a control on a masterpage that uses a second masterpage

 
 
Torben Laursen
Guest
Posts: n/a
 
      14th Mar 2008
I want to change the label of a component that I have on a masterpage but I
cannot get my hands on it
I have a mastepage MP2 that has a button called B2
masterpage MP2 uses masterpage MP1 that has a button called B1

I then have a page called default and in the page load I tryed:
System.Web.UI.WebControls.Button B10 =
(System.Web.UI.WebControls.Button)Master.FindControl("B1");
System.Web.UI.WebControls.Button B20 =
(System.Web.UI.WebControls.Button)Master.FindControl("B2");

However both B10 and B20 is null.

So how do I get my hands on B1 and B2 so I can set there label?

Thanks Torben

 
Reply With Quote
 
 
 
 
clintonG
Guest
Posts: n/a
 
      14th Mar 2008
I haven't used --nested-- Master Pages yet but they must still compile into
the same control tree as any other page. I've had insight by enabling
trace="true" on the page and then looking for the control I wanted to
reference in the control tree. Then its a matter of using the FindControl
method which gets ugly as it often has to be used repeatedly in the same
statement. That is what is called late binding.

You can try early binding by developing a Property for the label control
which allows direct access to the control by referencing its property.
Here's some notes I copied out of a file...

//A master page can expose properties by simply making
//those properties public within the master page.

//private string _someProperty;
//public string SomeProperty
//{
// get { return _someProperty; }
// set { _someProperty = value; }
//}


"Torben Laursen" <(E-Mail Removed)> wrote in message
news:5B90BDEB-240B-49DC-934F-(E-Mail Removed)...
>I want to change the label of a component that I have on a masterpage but I
>cannot get my hands on it
> I have a mastepage MP2 that has a button called B2
> masterpage MP2 uses masterpage MP1 that has a button called B1
>
> I then have a page called default and in the page load I tryed:
> System.Web.UI.WebControls.Button B10 =
> (System.Web.UI.WebControls.Button)Master.FindControl("B1");
> System.Web.UI.WebControls.Button B20 =
> (System.Web.UI.WebControls.Button)Master.FindControl("B2");
>
> However both B10 and B20 is null.
>
> So how do I get my hands on B1 and B2 so I can set there label?
>
> Thanks Torben


 
Reply With Quote
 
Torben Laursen
Guest
Posts: n/a
 
      14th Mar 2008
Thanks,

I tryed this. I made a property on both master pages so I can access the 2
buttons.

But using this method I can only get MP2.

So I still need a way to access both B1 and B2

Torben

"clintonG" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
>I haven't used --nested-- Master Pages yet but they must still compile into
>the same control tree as any other page. I've had insight by enabling
>trace="true" on the page and then looking for the control I wanted to
>reference in the control tree. Then its a matter of using the FindControl
>method which gets ugly as it often has to be used repeatedly in the same
>statement. That is what is called late binding.
>
> You can try early binding by developing a Property for the label control
> which allows direct access to the control by referencing its property.
> Here's some notes I copied out of a file...
>
> //A master page can expose properties by simply making
> //those properties public within the master page.
>
> //private string _someProperty;
> //public string SomeProperty
> //{
> // get { return _someProperty; }
> // set { _someProperty = value; }
> //}
>
>
> "Torben Laursen" <(E-Mail Removed)> wrote in message
> news:5B90BDEB-240B-49DC-934F-(E-Mail Removed)...
>>I want to change the label of a component that I have on a masterpage but
>>I cannot get my hands on it
>> I have a mastepage MP2 that has a button called B2
>> masterpage MP2 uses masterpage MP1 that has a button called B1
>>
>> I then have a page called default and in the page load I tryed:
>> System.Web.UI.WebControls.Button B10 =
>> (System.Web.UI.WebControls.Button)Master.FindControl("B1");
>> System.Web.UI.WebControls.Button B20 =
>> (System.Web.UI.WebControls.Button)Master.FindControl("B2");
>>
>> However both B10 and B20 is null.
>>
>> So how do I get my hands on B1 and B2 so I can set there label?
>>
>> Thanks Torben

>


 
Reply With Quote
 
PJ on Development
Guest
Posts: n/a
 
      14th Mar 2008
Hi,

Let me see if I understood your problem

You have a scenario like this:

+------------
| Master Page 1
|
| +-----------
| | Master Page 2
| |
| | +----------
| | | Content Page
| | |

And you're trying to access from Content Page a control on the Master
Page 1. Am I correct?

If so, I think you can do the following

Private Sub ContentPage_Load(sender as Object, e as EventArgs) Handles
Me.Load

Dim mp2 As MasterPage = Me.Master
Dim mp1 As MasterPage = mp2.Master

Dim btn1 As Button = CType(mp1.FindControl("btnMaster1"),
Button)
Dim btn2 As Button =
CType(mp1.FindControl("ContentPlaceHolder1").FindControl("btnMaster2"),
Button)

btn1.Text = "MP1 Changed from Content Page"
btn2.Text = "MP2 Changed from Content Page"

End Sub

I've put up a sample test project at http://rapidshare.com/files/99551862...rPage.zip.html

Anyways, the problem is that when using nested Master Pages, the
hierarchy is created on the top most Master Page.

And as you can see by the code snippet the ContentPlaceHolder is build
into the hierarchy.

Regards,

Paulo Santos
http://pjondevelopment.50webs.com


On Mar 14, 11:31*am, "Torben Laursen" <d...@not.work> wrote:
> Thanks,
>
> I tryed this. I made a property on both master pages so I can access the 2
> buttons.
>
> But using this method I can only get MP2.
>
> So I still need a way to access both B1 and B2
>
> Torben
>
> "clintonG" <nob...@nowhere.com> wrote in message
>
> news:(E-Mail Removed)...
>
>
>
> >I haven't used --nested-- Master Pages yet but they must still compile into
> >the same control tree as any other page. I've had insight by enabling
> >trace="true" on the page and then looking for the control I wanted to
> >reference in the control tree. Then its a matter of using the FindControl
> >method which gets ugly as it often has to be used repeatedly in the same
> >statement. That is what is called late binding.

>
> > You can try early binding by developing a Property for the label control
> > which allows direct access to the control by referencing its property.
> > Here's some notes I copied out of a file...

>
> > //A master page can expose properties by simply making
> > //those properties public within the master page.

>
> > //private string _someProperty;
> > //public string SomeProperty
> > //{
> > // * *get { return _someProperty; }
> > // * *set { _someProperty = value; }
> > //}

>
> > "Torben Laursen" <d...@not.work> wrote in message
> >news:5B90BDEB-240B-49DC-934F-(E-Mail Removed)...
> >>I want to change the label of a component that I have on a masterpage but
> >>I cannot get my hands on it
> >> I have a mastepage MP2 that has a button called B2
> >> masterpage MP2 uses masterpage MP1 that has a button called B1

>
> >> I then have a page called default and in the page load I tryed:
> >> * * * *System.Web.UI.WebControls.Button B10 =
> >> (System.Web.UI.WebControls.Button)Master.FindControl("B1");
> >> * * * *System.Web.UI.WebControls.Button B20 =
> >> (System.Web.UI.WebControls.Button)Master.FindControl("B2");

>
> >> However both B10 and B20 is null.

>
> >> So how do I get my hands on B1 and B2 so I can set there label?

>
> >> Thanks Torben- Hide quoted text -

>
> - Show quoted text -


 
Reply With Quote
 
clintonG
Guest
Posts: n/a
 
      15th Mar 2008
Which is why enabling trace is so useful for referencing controls.

<%= Clinton Gallagher


"PJ on Development" <(E-Mail Removed)> wrote in message
news:dd20810c-7703-4646-bdee-(E-Mail Removed)...
Hi,

Let me see if I understood your problem

You have a scenario like this:

+------------
| Master Page 1
|
| +-----------
| | Master Page 2
| |
| | +----------
| | | Content Page
| | |

And you're trying to access from Content Page a control on the Master
Page 1. Am I correct?

If so, I think you can do the following

Private Sub ContentPage_Load(sender as Object, e as EventArgs) Handles
Me.Load

Dim mp2 As MasterPage = Me.Master
Dim mp1 As MasterPage = mp2.Master

Dim btn1 As Button = CType(mp1.FindControl("btnMaster1"),
Button)
Dim btn2 As Button =
CType(mp1.FindControl("ContentPlaceHolder1").FindControl("btnMaster2"),
Button)

btn1.Text = "MP1 Changed from Content Page"
btn2.Text = "MP2 Changed from Content Page"

End Sub

I've put up a sample test project at
http://rapidshare.com/files/99551862...rPage.zip.html

Anyways, the problem is that when using nested Master Pages, the
hierarchy is created on the top most Master Page.

And as you can see by the code snippet the ContentPlaceHolder is build
into the hierarchy.

Regards,

Paulo Santos
http://pjondevelopment.50webs.com


On Mar 14, 11:31 am, "Torben Laursen" <d...@not.work> wrote:
> Thanks,
>
> I tryed this. I made a property on both master pages so I can access the 2
> buttons.
>
> But using this method I can only get MP2.
>
> So I still need a way to access both B1 and B2
>
> Torben
>
> "clintonG" <nob...@nowhere.com> wrote in message
>
> news:(E-Mail Removed)...
>
>
>
> >I haven't used --nested-- Master Pages yet but they must still compile
> >into
> >the same control tree as any other page. I've had insight by enabling
> >trace="true" on the page and then looking for the control I wanted to
> >reference in the control tree. Then its a matter of using the FindControl
> >method which gets ugly as it often has to be used repeatedly in the same
> >statement. That is what is called late binding.

>
> > You can try early binding by developing a Property for the label control
> > which allows direct access to the control by referencing its property.
> > Here's some notes I copied out of a file...

>
> > //A master page can expose properties by simply making
> > //those properties public within the master page.

>
> > //private string _someProperty;
> > //public string SomeProperty
> > //{
> > // get { return _someProperty; }
> > // set { _someProperty = value; }
> > //}

>
> > "Torben Laursen" <d...@not.work> wrote in message
> >news:5B90BDEB-240B-49DC-934F-(E-Mail Removed)...
> >>I want to change the label of a component that I have on a masterpage
> >>but
> >>I cannot get my hands on it
> >> I have a mastepage MP2 that has a button called B2
> >> masterpage MP2 uses masterpage MP1 that has a button called B1

>
> >> I then have a page called default and in the page load I tryed:
> >> System.Web.UI.WebControls.Button B10 =
> >> (System.Web.UI.WebControls.Button)Master.FindControl("B1");
> >> System.Web.UI.WebControls.Button B20 =
> >> (System.Web.UI.WebControls.Button)Master.FindControl("B2");

>
> >> However both B10 and B20 is null.

>
> >> So how do I get my hands on B1 and B2 so I can set there label?

>
> >> Thanks Torben- Hide quoted text -

>
> - Show quoted text -


 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Masterpage change its masterpage mr t Microsoft ASP .NET 0 29th Aug 2007 11:11 PM
MasterPages - take plain form, add MasterPage. MasterPage does NOT appear when run Randy Smith Microsoft ASP .NET 8 14th Apr 2007 10:06 AM
MasterPage inheriting a MasterPage... is it possible? ThunderMusic Microsoft ASP .NET 2 27th Sep 2006 08:57 PM
MasterPage -> Page -> MasterPage Code Access =?Utf-8?B?QWxleCBNYWdoZW4=?= Microsoft ASP .NET 3 14th Apr 2006 01:34 PM
asp.net 2.0 control on a masterpage Netmonster Microsoft C# .NET 1 17th Mar 2006 01:27 AM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 08:20 PM.