J'ai un bouton dans mon usercontrol. Lorsque ce bouton est cliqué, je dois appeler une méthode qui est dans la page aspx.Méthode d'accès à la page ASPX à partir de la commande usercontrol
Comment faire cela?
Merci
J'ai un bouton dans mon usercontrol. Lorsque ce bouton est cliqué, je dois appeler une méthode qui est dans la page aspx.Méthode d'accès à la page ASPX à partir de la commande usercontrol
Comment faire cela?
Merci
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.
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.