VS 2005, contrôle personnalisé et Toolbox
Par amethyste le Mai 5, 2007 | Dans focus | 4 retours »
Il vous est très certainement arrivé de développer des composants personnalisés dans vos projets ASP.
Visual Studio 2005 proclame haut et plus ou moins fort que celui-ci est maintenant ajouté automatiquement dans la barre d'outil. Seulement l'expérience du terrain est en général plus mitigée. Il y a au moins deux raisons à l'échec de cette affirmation:
- Vous ne développez pas le composant dans un projet du bon type
- Vous vous heurtez à un bug de VS 2005
Le premier cas est simple à régler. Le composant doit être développé dans un projet Class Library. On en déduit immédiatement que cette fonctionnalité ne concerne pas les composants ASCX (il existe une terminologie officielle, mais disons que je ne désespère pas de me la mettre dans la tête
avant que la technologie ASP disparaisse).
La deuxième cause d'échec est un bug dans VS. Voyons donc ce fameux bug et la façon de le contourner.
Je dois dire qu'il m'a beaucoup tracassé car à ma grande surprise il semblait ne se produire que pour certains composants et dans certains projets. Jusqu'au jour où j'ai réalisé qu'il ne concerne que les composant qui héritent de CompositeControl.
Faites un essai avec le composant montré en démo dans un de mes blogs précédent[1] et vous constaterez que la barre d'outils reste désespérément vide après recompilation.
Inutile de dire que j'ai écumé le web pour chercher une solution. J'en ai trouvé une bonne douzaine allant du très technique au farfelu le plus total. De toute façon, même si j'ai appris deux/trois trucs qui feront l'objet d'autres blogs, aucunes n'a fonctionné chez moi.
Alors voici donc en exclusivité mondiale une solution qui fonctionne. J'en suis certain, parce que j'ai testé.
- Vous remplacez l'héritage CompositeControl par WebControl
- Si vous avez surchargé CreateChildControl (je n'imagine pas que ce ne soit pas le cas d'ailleurs!) vous le mettez en commentaire pour rendre le code compilable
- Vous compilez
- Vous ouvrez une page ASPX et constatez que la barre d'outil s'est enrichie d'un onglet du nom de la librairie avec votre nouveau contrôle révolutionnaire
- Vous remplacez l'héritage WebControl par CompositeControl tout comme avant
- Vous réactivez CreateChildControl, de toute façon vous verrez très vite un problème
Et voilà. Merci qui?
Bibliographie
Evénements ASP: le quizz
http://www.dotnetguru2.org/amethyste/index.php?p=669&more=1&c=1&tb=1&pb=1
Tout sur les contrôles composites
4 commentaires
Si jamais tu as une idée pour résoudre le problème laisse moi savoir. Ton blog est bien intéressant, tu peux me compter parmi un de tes nouveaux lecteurs!
Sur mon poste actuel j'ai besoin d'une étape supplémentaire: faire un refresh de la toolbox et tout rentre dans l'ordre
Sache aussi que VS 2008 met en panne des tas de trucs dans VS 2005, c'est peut être aussi une piste.
Je suis plus lindy ou rock que balboa, mais c'est sympa quand même!
Laisser un commentaire
| « Fonctions intégrées et combo | Evénements ASP: quizz suite et fin » |