Voici le problème .... J'ai trois composants ... Une page qui contient un contrôle utilisateur et un contrôle côté serveur qui est dans le contrôle de l'utilisateur. Le contrôle utilisateur a une poignée d'événements que la page écoute pour modifier ce que fait le contrôle côté serveur.Événements de contrôle .NET et cycle de vie de la page
Le contrôle serveur crée essentiellement une liste de recherche TV-Guide remplie de nombreuses commandes ASP.NET plus petites qui doivent avoir des événements. Tous ces contrôles sont créés dynamiquement (côté serveur évidemment). Le remplissage de ce contrôle côté serveur nécessite des opérations qui sont de nature intensive et ne doivent donc être effectuées qu'une seule fois par publication. Event1 et Event2 fire et vont fondamentalement changer les choses sur le rendu des contrôles côté serveur (tri, filtrage, etc) alors quand ils tirent, j'ai besoin d'appeler PopulateControls à coup sûr.
Voici le problème: je ne trouve pas le meilleur endroit pour mettre l'appel à PopulateControls. Si je le mets dans le PageLoad, il se déclenche et dessine la liste avant tous les événements. Ensuite, mes événements doivent appeler eux-mêmes PopulateControls pour répondre à l'événement. Si je mets l'appel dans PreRender, les événements du contrôle côté serveur ne se déclenchent pas car d'après ce que j'ai lu, ils doivent être créés avant ou pendant PageLoad.
Alors, où dois-je mettre cet appel de sorte que je n'ai qu'à l'appeler une fois et pour qu'il puisse répondre aux événements appropriés?
Voici quelques pseudo-code
public class MyPage : System.Web.UI.Page
{
protected UserControl MyUserControl;
// Wire up event handlers
MyUserControl.Event1 += OnEvent1;
MyUserControl.Event2 += OnEvent2;
public Page_Load()
{
}
public PreRender()
{
PopulateControls();
}
private PopulateControls()
{
// Do intensive operation to populate controls
}
protected OnEvent1()
{
}
protected OnEvent2()
{
}
}
D'accord, mais cela ne résout pas mon problème. Si je les crée là, je vais devoir les RECRÉTER encore quand mon événement se déclenchera plus tard parce que l'événement change ce qui doit être dessiné. – cjserio