2009-03-13 3 views
0

J'essaye de créer un contrôle (MyControl) qui fait des choses à d'autres contrôles sur la page où il est allumé. Il a la propriété:Comment passez-vous un autre contrôle dans un contrôle ASP.NET créé par l'utilisateur en tant que paramètre dans sa déclération en utilisant l'ID de l'autre contrôle?

public property System.Web.UI.Control SomeOtherControl; 

Je veux être en mesure de définir cette propriété à partir de la page ASPX qui utilise le contrôle. En ce moment, la seule façon que je peux le faire est dans le Page_Load du code-behind:

MyControl.SomeOtherControl = TheOtherControl; 

au lieu d'avoir à faire sur le code-behind de chaque page qui utilise MyControl, je veux le faire faire ceci sur la page ASPX:

<xyz:MyControl SomeOtherControl="TheOtherControlsID" /> 

pour ce faire, j'ai essayé d'utiliser la méthode Page.FindControl() sur la chaîne d'identification pour trouver le contrôle référencé lorsque MyControl initialise, mais il ne recherche que les contrôles de haut niveau de la page. Je pourrais écrire mon propre FindControl() récursif, mais je pense qu'il doit y avoir une meilleure façon de le faire, et je suis inquiet de la performance de quelque chose comme ça. Des idées?

Répondre

1

Un FindControl récursif est probablement beaucoup plus rapide que vous pourriez le croire. Je n'ai même jamais été capable de mesurer une valeur de milliseconde de temps de traitement différent, même avec des centaines de contrôles.

Questions connexes