2009-08-18 9 views
0

J'ai un contrôle utilisateur ProductBox.ascx que j'utilise comme ItemTemplate pour une DataList comme je dois le répéter.Maintenant, ce datalist est dans un contrôle utilisateur séparé ProductGrid.ascx. Il y a un troisième usercontrol ProductPopUp.ascx. Tous ces contrôles sont sur la page User.aspx.contrôle utilisateur à la communication usercontrol imbriqué dans asp.net

Je souhaite accéder à ProductBox.ascx à partir de ProductPopUp.ascx. Je veux une solution faiblement couplée à cela.

S'il vous plaît l'esprit ProductBox.ascx est à l'intérieur d'autres usercontrol

Répondre

0

Créer un membre de la propriété publique sur le contrôle imbriqué et définissez cela comme nécessaire pour le passage de base en données/valeurs. Editer: Si ces contrôles sont répétés, etc., vous pouvez ensuite définir ces nouvelles propriétés comme la définition d'autres contrôles en utilisant 'FindControl' et en obtenant une référence à UserControl.

Est-ce ce que vous cherchez?

+0

Il existe une propriété publique dans ProductBox.ascx qui contient toutes les informations que je veux. Je ne suis pas capable d'accéder à ProductBox.ascx car il est à l'intérieur d'un autre contrôle utilisateur. Je pense que je peux le trouver en utilisant findcontrol récursif mais encore une fois ce ne sera pas la meilleure solution. – Rohit

0

Je comprends votre désir de couplage lâche que les contrôles de l'utilisateur devraient être les seuls responsables de leur apparence. Cependant, je peux imaginer des circonstances où les contrôles parentaux doivent dicter le comportement de leurs enfants.

Vous pouvez générer l'événement de liaison de données de DataList jusqu'à la page parent, puis manipuler chaque produit. Juste essayer de minimiser la complexité de l'interface entre les parents & enfants mettant autant de logique métier dans les contrôles du produit que vous le pouvez.

Questions connexes