Contrôle de conteneur ASP.NET personnalisé
J'ai essayé de créer un contrôle personnalisé qui fonctionne exactement comme le Panneau de contrôle d'exception entouré par quelques-uns de divs et tel de créer un arrondi boîte. Je n'ai pas été en mesure de trouver un bon exemple de comment faire cela.
J'ai besoin d'être en mesure de placer du texte et des contrôles à l'intérieur du contrôle et de pouvoir y accéder directement sans faire référence à la cellule (exactement de la façon dont le Panneau de contrôle fonctionne).
Quelqu'un a des exemples de cela?
source d'informationauteur Arthur Chaparyan
Vous devez vous connecter pour publier un commentaire.
Il y a deux façons de le faire. L'une consiste à mettre en œuvre INamingContainer sur votre contrôle, et il faut beaucoup d'efforts.
L'autre façon est d'hériter de Panneau, et de remplacer les RenderBeginTag et RenderEndTag méthodes pour ajouter votre personnalisé de balisage. Ce est facile.
Il y a déjà quelques réponses ici, mais je voulais juste coller le plus fondamental de la mise en œuvre du présent sans hériter de Panneau de la classe. Donc, ici, il va:
Alors vous pouvez l'utiliser comme ceci:
Et de codebehind vous pouvez faire des choses comme ceci:
Créer une classe qui hérite du Système.Web.L'INTERFACE utilisateur.De contrôle, et overrride le Render ( HtmlTextWriter ) de la méthode.
Dans cette méthode, le rendu environnant les balises de début, puis de rendre les enfants(RenderChildren), puis rendre les balises de fin.
Des coins arrondis est généralement réalisé à l'aide de CSS et le coin des images pour le haut à gauche, en haut à droite, en bas à gauche et en bas à droite.
Il pourrait être fait à l'aide de 4 divs imbriqués, agissant en tant que couches, chacune ayant un coin de l'image que leur arrière-plan de l'image.
Projet de Code ont quelque chose qui pourrait vous intéresser : Panneau Courbe Récipient - Un ASP.NET Contrôle Personnalisé Pépite. Je suis sûr que vous pouvez jouer avec le code et le comportement et l'apparence que vous voulez.
Si vous ne voulez pas hériter directement de WebControl au lieu de partir du Panneau, de la façon la plus simple pour ce faire est de décorer la classe avec l'attribut
[ParseChildren(false)]
. Bien qu'à première vue cela pourrait suggérer que vous ne souhaitez pas analyser enfants, ce que lefalse
indique en fait, c'est que vous ne voulez pas que les enfants soient traités comme des propriétés. Au lieu de cela, vous voulez qu'ils soient traités comme des contrôles.Par l'utilisation de cet attribut, vous obtenez pratiquement toutes les fonctionnalités de la boîte:
Ce qui vous permettra d'ajouter RoundedBox les contrôles de vos pages, et d'ajouter des enfants (que ce soit asp.net les contrôles brut ou html) qui sera restitué à l'intérieur de votre div.
Bien sûr, css serait ajouté correctement le style de la roundedbox classe.
Juste une autre chose que vous pouvez utiliser, il ya une coins arrondis extender dans le ASP.Net ajax toolkit.
Je sais que c'est pas exactement ce que vous avez demandé, mais vous n'avez pas à écrire du code personnalisé.
Espère que ça aide!
J'ai regardé cette question parce que j'ai voulu produire un 2 colonne panneau de disposition. (pas tout à fait mais c'est beaucoup plus simple exemple de ce dont j'avais besoin. Je partage la solution que je me suis retrouvé à l'aide de:
La question que j'ai encore est l'intellisense ne fonctionne pas dans ce scénario, il ne suggère pas la Gauche et la Droite balises de Contenu.