Changing a control on a masterpage that uses a second masterpage

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Torben Laursen

    Changing a control on a masterpage that uses a second masterpage

    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.W ebControls.Butt on B10 =
    (System.Web.UI. WebControls.But ton)Master.Find Control("B1");
    System.Web.UI.W ebControls.Butt on B20 =
    (System.Web.UI. WebControls.But ton)Master.Find Control("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

  • clintonG

    #2
    Re: Changing a control on a masterpage that uses a second masterpage

    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" <does@not.workw rote in message
    news:5B90BDEB-240B-49DC-934F-59F5766492FC@mi crosoft.com...
    >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.W ebControls.Butt on B10 =
    (System.Web.UI. WebControls.But ton)Master.Find Control("B1");
    System.Web.UI.W ebControls.Butt on B20 =
    (System.Web.UI. WebControls.But ton)Master.Find Control("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

    Comment

    • Torben Laursen

      #3
      Re: Changing a control on a masterpage that uses a second masterpage

      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" <nobody@nowhere .comwrote in message
      news:eyom7idhIH A.3788@TK2MSFTN GP04.phx.gbl...
      >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" <does@not.workw rote in message
      news:5B90BDEB-240B-49DC-934F-59F5766492FC@mi crosoft.com...
      >>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.W ebControls.Butt on B10 =
      >(System.Web.UI .WebControls.Bu tton)Master.Fin dControl("B1");
      > System.Web.UI.W ebControls.Butt on B20 =
      >(System.Web.UI .WebControls.Bu tton)Master.Fin dControl("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
      >

      Comment

      • PJ on Development

        #4
        Re: Changing a control on a masterpage that uses a second masterpage

        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_Loa d(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.FindC ontrol("btnMast er1"),
        Button)
        Dim btn2 As Button =
        CType(mp1.FindC ontrol("Content PlaceHolder1"). FindControl("bt nMaster2"),
        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 ContentPlaceHol der is build
        into the hierarchy.

        Regards,

        Paulo Santos



        On Mar 14, 11:31 am, "Torben Laursen" <d...@not.workw rote:
        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 .comwrote in message
        >
        news:eyom7idhIH A.3788@TK2MSFTN GP04.phx.gbl...
        >
        >
        >
        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.workw rote in message
        news:5B90BDEB-240B-49DC-934F-59F5766492FC@mi crosoft.com...
        >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.W ebControls.Butt on B10 =
        (System.Web.UI. WebControls.But ton)Master.Find Control("B1");
               System.Web.UI.W ebControls.Butt on B20 =
        (System.Web.UI. WebControls.But ton)Master.Find Control("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 -

        Comment

        • clintonG

          #5
          Re: Changing a control on a masterpage that uses a second masterpage

          Which is why enabling trace is so useful for referencing controls.

          <%= Clinton Gallagher


          "PJ on Development" <pjondevelopmen t@gmail.comwrot e in message
          news:dd20810c-7703-4646-bdee-738bd270f620@q7 8g2000hsh.googl egroups.com...
          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_Loa d(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.FindC ontrol("btnMast er1"),
          Button)
          Dim btn2 As Button =
          CType(mp1.FindC ontrol("Content PlaceHolder1"). FindControl("bt nMaster2"),
          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


          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 ContentPlaceHol der is build
          into the hierarchy.

          Regards,

          Paulo Santos



          On Mar 14, 11:31 am, "Torben Laursen" <d...@not.workw rote:
          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 .comwrote in message
          >
          news:eyom7idhIH A.3788@TK2MSFTN GP04.phx.gbl...
          >
          >
          >
          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.workw rote in message
          news:5B90BDEB-240B-49DC-934F-59F5766492FC@mi crosoft.com...
          >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.W ebControls.Butt on B10 =
          (System.Web.UI. WebControls.But ton)Master.Find Control("B1");
          System.Web.UI.W ebControls.Butt on B20 =
          (System.Web.UI. WebControls.But ton)Master.Find Control("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 -

          Comment

          Working...