2009-01-15 7 views
0

Dans mon contrôle utilisateur enfant, j'ai un gridview avec un gestionnaire d'événement OnRowCommand qui est exécuté lorsque le bouton Modifier est cliqué. Je veux définir la visibilité d'un contrôle d'espace réservé ASP.NET dans le parent sur true lorsque le bouton Modifier est cliqué dans le contrôle enfant.Comment déterminer quand un bouton est cliqué dans l'enfant sur le parent - ASP.NET

Quel serait le meilleur moyen d'accomplir cette tâche?

Mise à jour:
Après un peu plus de recherches sur les internets, je crée un événement public eventHandler dans mon contrôle enfant et rasied l'événement lorsque l'événement OnRowCommand a été congédié. Dans mon événement page_load de mon contrôle parent, j'ai mappé l'événement de contrôle utilisateur enfant à un événement privé dans mon contrôle parent.

code source Child Control:

public event EventHandler MyEvent; 

protected void MyGridView_OnRowCommand(object sender, GridViewCommandEventsArgs e) 
{ 
    if(MyEvent != null) 
     MyEvent(sender, e); 
} 

Parent code source de contrôle:

protected void Page_Load(object sender, EventArgs e) 
{ 
    MyChildControl.MyEvent += new EventHandler(this.MyLocalEvent); 
} 

private void MyLocalEvent(object sender, EventArgs e) 
{ 
    MyPlaceHolder.Visible = true; 
    MyUpdatePanel.Update(); 
} 

Répondre

1

Il existe deux méthodes en plus de bulles de l'événement à considérer:

a. Créez un nouvel événement dans votre contrôle utilisateur enfant. Écoutez cet événement dans le contrôle parent. Lancez cet événement dans le contrôle enfant.

b. Écoutez l'événement gridview OnRowCommand dans le contrôle parent.

L'approche a est supérieure car il y a moins de fuite dans l'abstraction. B est rapide et sale, mais s'il s'agit d'un contrôle utilisateur à usage unique, il n'aura pas d'impact négatif.

La création d'événements est assez facile, de nombreux programmes incluent des modèles pour les événements qui signifient que la seule chose que vous tapez est le nom de l'événement (par exemple, Resharper).

1

Du haut de ma tête je soit créer un nouvel événement au sein de l'enfant contrôle de l'utilisateur qui déclenche au large quand OnRowCommand se déclenche, ou utilisez OnBubbleEvent - Je ne me souviens pas du nom exact mais c'est quelque chose comme ça.

Questions connexes