2009-09-18 6 views

Répondre

1

Pour votre information, je suis un gars C#, vous devez convertir ma solution à vb.net, ou si quelqu'un souhaite modifier cette réponse qui serait la houle. Je pourrais essayer et me souvenir de la syntaxe, mais ensuite je me trompe et j'ajoute plus de confusion que de valeur.

Cela fonctionne, tous ont été faites est la coulée de la page à droite du type:

((MyParentPageType)this.Page).Method() 

Cela dit, je ne recommanderais pas le faire. Vous avez essentiellement câblé ce contrôle utilisateur sur la page parente. Vous pouvez au moins définir une interface que toute page contenant ce contrôle doit implémenter. À ce stade, vous avez fourni un peu de découplage.

Un mécanisme encore meilleur serait que le contrôle utilisateur déclenche un événement auquel la page parente sera abonnée. C'est ainsi que fonctionnent tous les autres contrôles. Vous pouvez le faire comme

Dans votre UserControl ajouter un événement:

private static readonly object EventClick=new object(); 
public event EventHandler<ClickEventArgs> Click 
{ 
    add 
    { 
     base.Events.AddHandler(EventClick, value); 
    } 
    remove 
    { 
     base.Events.RemoveHandler(EventClick, value); 
    } 
} 

Puis votre page ajouter un gestionnaire pour l'événement Click, vous pouvez déclencher l'événement lorsque vous avez besoin. Vous avez maintenant découplé votre contrôle utilisateur de la page.

0

Ne sait pas VB.Net que bien, mais en C# sur le code derrière j'ajouterais:

/// <summary> 
    /// Relay 
    /// </summary> 
    public event EventHandler ButtonClick; 

    protected void BtnClick(object sender, EventArgs e) 
    { 
     if (this.ButtonClick != null) this.ButtonClick(sender, e); 
    } 

Je pense que le VB.Net serait (mais vraiment pas sûr!):

Public Event ButtonClick as EventHandler 

    Private Sub BtnClick(ByRef sender as object, ByRef e as EventArgs) 
     RaiseEvent ButtonClick(sender, e) 
    End Sub 

Ceci expose un événement sur le UserControl qui peut être utilisé dans la page à câbler.

Sur la balistique du bouton Asp: dans UserControl, définissez le OnClick="BtnClick" et il doit relayer l'événement à l'événement sur UserControl.

Dans le balisage de la page, ajoutez OnButtonClick="PageBtnClick" à la balise UserControl, qui peut ensuite appeler la méthode de la page que vous souhaitez.

Questions connexes