2009-05-19 12 views
1

J'utilise un UserControl qui est présent dans la page maître. J'ai besoin d'accéder à un contrôle de page maître dans UserControl. J'ai besoin de tes suggestions.Contrôle de page maître d'accès

Le scénario est Une étiquette est présente dans la page maquette. Basé sur des sélections dans le contrôle d'utilisateur, j'ai besoin de modifier l'étiquette de masterpage. UserControl est présent dans la page maître elle-même et non dans le détenteur du contenu.

Répondre

1

moyen rapide et facile est de créer un événement dans le contrôle et la poignée en maître comme ceci:

//Control aspx 
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestControl.ascx.cs" 
    Inherits="TestControl" %> 

<div style="width:300px;border:2px groove blue;"> 
    <asp:Button ID="btn1" runat="server" Text="One" onclick="btn_Click" /> 
    <asp:Button ID="btn2" runat="server" Text="Two" onclick="btn_Click" /> 
    <asp:Button ID="btn3" runat="server" Text="Three" onclick="btn_Click" /> 
    <asp:Button ID="btn4" runat="server" Text="Four" onclick="btn_Click" /> 
</div>  

//Control C# 

namespace Controls 
{ 
    public partial class TestControl : System.Web.UI.UserControl 
    { 
     public delegate void UserChoice(TestEventArgs e); 
     public event UserChoice OnUserChoice; 

     protected void btn_Click(object sender, EventArgs e) 
     { 
      if (OnUserChoice != null) 
       OnUserChoice(new TestEventArgs(((Button)sender).Text)); 
     } 
    } 

    public class TestEventArgs : EventArgs 
    { 
     private string _value; 

     public TestEventArgs(string str) 
     { 
      _value = str; 
     } 
     public string Message 
     { 
      get { return _value; } 
     } 
    } 
} 


//MasterPage Code 

protected void Page_Load(object sender, EventArgs e) 
{ 
    test1.OnUserChoice += new 
     Controls.TestControl.UserChoice(test1_OnUserChoice); 
} 

void test1_OnUserChoice(ROMS.Intranet.Controls.TestEventArgs e) 
{ 
    MasterLabel.Text = e.Message; 
} 

MasterLabel est le nom de l'étiquette dans la page principale. Test1 est le contrôle dans le gabarit.

4

Créer une méthode publique (ou des biens publics) dans la page principale de modifier votre étiquette et dans le UserControl vous pouvez l'appeler, à travers l'objet Page.master:

YourMasterPageClass master = Page.master as YourMasterPageClass; 
if(master != null) 
{ 
    master.YourEditMethod("hello"); 
}