2013-04-03 5 views
1

J'ai une page Default.aspx et j'utilise un usercontrol. Sous certaines conditions dans usercontrol.cs, je dois invoquer une fonction présente dans la page Default.aspx.cs (page parent du contrôle utilisateur). S'il vous plaît aidez-moi et dites-moi le moyen de faire cette tâche.Appel de la page parent à partir du contrôle utilisateur

+0

[Cela vous aidera] (http://stackoverflow.com/questions/623136/calling-a-method-in-parent-page-from-user-control?rq=1) – Damith

Répondre

0

Vous avez jeter la propriété Page du type réel:

var def = this.Page as _Default; 
if(def != null) 
{ 
    def.FunctionName(); 
} 

la méthode doit être publique:

public partial class _Default : System.Web.UI.Page 
{ 
    public void FunctionName() 
    { 

    } 
} 

Mais notez que ce n'est pas le plus pratique puisque vous êtes Hard- reliant le UserControl avec un Page. Normalement, un objet d'un UserControl est la réutilisabilité. Pas plus ici. La meilleure façon de communiquer à partir d'une UserControl avec sa page utilise un événement personnalisé qui peut être géré par la page.

Mastering Page-UserControl Communication - event driven communication

-2

Essayez cette

MyAspxClassName aspxobj= new MyUserControlClassName(); 
    aspxobj.YourMethod(param); 
+1

Vous plaisantez? Mis à part le fait qu'un 'UserControl' n'est pas un' Page', l'utilisation d'un constructeur pour créer une page (ou 'UserControl') ne fonctionnera pas si vous voulez accéder aux contrôles sur cette' Page' ou 'UserControl' depuis cette instance n'est pas créé à partir d'ASP.NET via le cycle de vie d'une page. –

0

Ajouter un événement au contrôle de l'utilisateur:

public event EventHandler SpecialCondition; 

Raise cet événement dans votre contrôle utilisateur lorsque la condition est remplie:

private void RaiseSpecialCondition() 
{ 
    if (SpecialCondition != null) // If nobody subscribed to the event, it will be null. 
     SpecialCondition(this, EventArgs.Empty); 
} 

Ensuite, dans votre page contenant le contrôle de l'utilisateur, pour écouter l'événement:

public partial class _Default : System.Web.UI.Page 
{ 
    public void Page_OnLoad(object sender, EventArgs e) 
    { 
     this.UserControl1.OnSpecialCondition += HandleSpecialCondition; 
    } 

    public void HandleSpecialCondition(object sender, EventArgs e) 
    { 
     // Your handler here. 
    } 
} 

Vous pouvez changer le EventArgs à quelque chose de plus utile pour transmettre des valeurs autour, si nécessaire.

0

parent.aspx.cs

public void DisplayMsg(string message) 
{ 
    if (message == "" || message == null) message = "Default Message"; 
    Response.Write(message); 
} 

Pour appeler la fonction de la page parent de contrôle utilisateur utilise les éléments suivants: UserControl.ascx.cs

this.Page.GetType().InvokeMember("DisplayMsg", System.Reflection.BindingFlags.InvokeMethod, null, this.Page, new object[] { "My Message" }); 

Cela fonctionne bien pour moi ..

Questions connexes