2010-05-14 2 views
0

J'ai un contrôle utilisateur qui est utilisé deux fois sur la même page, chacun a la capacité d'être mis à jour (une liste déroulante obtient un nouvel élément) et I ' Je ne suis pas sûr de ce qui pourrait être la meilleure façon de gérer cela.deux UserControls, une page, ont besoin de se notifier des mises à jour

Une préoccupation - il s'agit d'un système plus ancien (~ 4 + ans, datasets, .net2) et il est incroyablement fragile. J'ai réussi à le faire fonctionner sur 3.5 sans problèmes, mais j'ai eu quelques run-ins avec la validation javascript (~ 300 lignes par page) vomir partout quand je change/ajoute/modifie les contrôles dans le parent.

Répondre

0

n'a même pas besoin de plus, j'oublié de mentionner qu'il était vb, donc je mis cela dans le contrôle de l'utilisateur ...

Public Event UpdateListings As EventHandler 

Public Function SomethingToDo 

    'doing some cool stuff ...not really 

    RaiseEvent UpdateListings(Me, EventArgs.Empty) 

    Return result 
End Function 

puis sur le code sous-jacent sur la page parent

Protected Sub UpdateStuff(ByVal sender As Object, ByVal e As EventArgs) Handles userControl1.UpdateListings, userControl2.UpdateListings 
    userControl1.BindStuff() 
    userControl2.BindStuff() 
End Sub 
2

Ajouter un événement à votre contrôle utilisateur.

public event EventHandler MyEvent; 

    protected void OnMyEvent(EventArgs e) 
    { 
     if(MyEvent != null) 
     { 
      MyEvent(this, e); 
     } 
    } 

    protected void AddOptionAdded(object sender, EventArgs e) 
    { 
     OnMyEvent(EventArgs.Empty); 
    } 

Ensuite, dans votre page, vous pouvez vous abonner à l'événement des deux contrôles. Puis, dans le gestionnaire d'événements de votre page, vous pouvez faire tout ce que vous devez faire pour mettre à jour l'autre contrôle. Appel d'une méthode, etc.

Vous pouvez également aller jusqu'à créer vos propres classes de délégué et EventArgs pour transmettre des données personnalisées supplémentaires qui peuvent être nécessaires.

+0

ok cela ne fonctionnait pas, voir ma "réponse" à ma propre question (j'ai essayé de poster ce truc à un commentaire ... formatage échouer) – jeriley

Questions connexes