2010-08-17 25 views
0

J'ai un contrôle utilisateur qui sert de conteneur pour contenir plus de contrôles utilisateur en son sein.asp.net effectuer une action après que les contrôles enfant aient terminé la saisie de données

Je dois effectuer certaines vérifications d'accès une fois que toutes les commandes enfants ont une base de données.

J'espérais que je pourrais attacher à un événement usercontrol.databound mais il ne semble pas en être un.

Quelles autres options ai-je pour faire quelque chose sur le contrôle utilisateur parent une fois que les autres contrôles usercontenus dans la base de données. Je suppose que je dois obtenir les contrôles enfants pour informer le parent qu'ils ont databound et le parent devra suivre qui ont databound et qui n'ont pas et quand ils ont tous databound il peut effectuer son action.

Répondre

0

Vous n'avez pas besoin d'obtenir les contrôles enfants pour avertir le parent. Regardez le ASP.Net Page :Life Cycle. Vous devez placer le code dans le contrôle utilisateur conteneur dans l'événement PreRender. Cela s'exécute après les événements de publication.

+0

Je pensais le mettre dans le pré-rendu en dernier recours. Nous avons eu de mauvaises expériences avec ce genre de chose en pré-rendu auparavant mais je pense que c'était principalement parce qu'une classe de dieu contrôlait toute la logique plutôt que par contrôle ayant la logique de ce dont elle avait besoin. –

-1

Basé sur ASP.net Page Life Cycle Events article, j'ai utilisé ceci:

protected void Page_PreRenderComplete(object sender, EventArgs e) 
{ 
    if (!IsPostBack) //only at 1st load 
    UpdateSelection(); 
} 

protected void UpdateSelection() 
{ 
    UpdateSelection(listItems.SelectedValue); 
} 

protected void listItems_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    UpdateSelection(); 
} 

Dans mon cas, UpdateSelection était chargement des données XML à partir d'un fichier sélectionné dans une liste déroulante (qui, au début pointe vers l'index 0) et avait besoin CheckBoxLists sur la page pour avoir d'abord obtenu leurs éléments à partir d'autres fichiers XML afin qu'ils permettent au code de vérifier les éléments sur les données XML

Ensuite, UpdateSelection est juste appelé à l'événement selectedIndexChanged dropdownlist (ces fais les PostBacks donc à PreRenderComplete je les ignore pour éviter de faire Sélection deux fois)