Bonjour,
Je viens ici un peu à bout de force car je me bagarre avec VS pour des soucis de mise en page de mes contrôles personnalisés. Je m'explique.
J'ai une classe Details qui hérite de System.Web.UI.WebControls.DetailsView. J'ai aussi des classes personnalisées (ex : TextField, DateField) qui héritent de mon GenericField, qui hérite lui-même de System.Web.UI.WebControls.BoundField.
Mon composant GenericField est composé d'un Label et généralement d'un champ de saisie, genre TextBox, DropDownList, etc. Pour faire marcher tout ce petit monde, j'ai simplement effectué un override de la fonction InitializeDataCell, dans laquelle j'ajoute mes objets Label et ses potes dans les Controls de la cellule :
J'espère que vous me suivez, parce qu'on en vient au problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 protected override void InitializeDataCell(DataControlFieldCell cell, DataControlRowState rowState) { // Label this.lblHighLight = new Label(); this.lblHighLight.Text = "<font color='red'><b>! </b></font>"; cell.Controls.Add(lblHighLight); this.lblHighLight.Visible = false; }
Donc en temps normal, tout va bien. Mes tableaux sont correctement alimentés et affichés. Dans mes cellules, j'affiche ou non mon Label en fonction des cas. Malheureusement, dès que je touche à la propriété ControlStyle-Width de mes colonnes afin de tout aligner sinon c'est moche, ça me fout en l'air ma présentation. Par exemple, j'ai mon Label et le composant de saisie sur deux lignes. Quelle que soit la largeur que je saisisse dans ControlStyle-Width, que j'aie de la place ou pas.
Je vous colle 2 copies d'écran, histoire de vous faire une idée visuelle de mon désarroi intérieur. Une sans modification du ControlStyle-Width, et une avec.
La question à 1000fr est donc : comment puis-je gérer plus finement ma présentation ? Peut-être en réécrivant le Render de mes classes, mais je ne sais pas trop par où commencer.
En vous remerciaaaant !
Nicholas
EDIT : bon, j'aurais dû faire le boulot plus tout, mais je viens de parser le code HTML généré, histoire de voir ce qui différait. En fait, l'application de la propriété ControlStyle-Width sur mon composant GenericField engendre l'application de la contrainte de largeur sur ses deux composants (Label et champ de saisie). Bon, j'avance. Mais maintenant, comment contrôler l'application du ControlStyle-Width pour qu'il ne joue que sur le champ de saisie et qu'il laisse mon Label tranquille...?
Partager