2010-01-22 2 views
9

J'essaie de créer un menu avec le code suivant. Mais je ne peux pas comprendre comment faire apparaître chaque LinkButton sur des lignes séparées.Comment ajouter un saut de ligne ou un HTML à l'intérieur d'un Panel?

MenuPanel.Controls.Clear(); 
foreach (FormList f in forms) 
{ 
    if (f.IsActive == "y") 
    { 
    FormUserControl fc = (FormUserControl)LoadControl(f.StartControl); 
    LinkButton lb = new LinkButton(); 
    lb.Text = fc.Title; 
    MenuPanel.Controls.Add(lb); 
    // I want some sort of line break here 
    } 
} 

Répondre

16

Utilisez la classe LiteralControl pour insérer un saut de ligne ...

MenuPanel.Controls.Add(new LiteralControl("<br />")); 

Ou utiliser les CSS pour faire des éléments de niveau bloc vos liens ...

#menu a { display: block; } 
+0

je devais utiliser un LiteralControl, mais essentiellement cela fonctionnait très bien. – ProgrammingPope

+0

+1 pour la paire de bonne Réponses N'oubliez pas que vous devez séparer vos liens avec plus de white-space pour vous conformer aux spécifications WCAG (ie la première suggestion est meilleure à cet égard que la seconde) – Fenton

+0

Bonne réponse, d'habitude je crée beaucoup de Littéral avec le texte de
car il ne peut pas être réutilisé Votre suggestion nettoie un peu mon code – teapeng

1

Vous pourriez faire ce:

HtmlGenericControl div = new HtmlGenericControl("div"); 
div.Text = "&nbsp;"; 
MenuPanel.Controls.Add(div); 
2

Je sais que cette réponse a déjà été acceptée, mais j'aimerais suggérer une autre option. Si vous voulez une liste verticale d'éléments, il peut être utile d'utiliser un élément ul ou ol. Cela signifie que vous n'avez pas besoin d'utiliser la balise dreaded br ou des hacks pour obtenir ce dont vous avez besoin.

+0

+1 pour utiliser le balisage pour ce qu'il est conçu –

2

FYI: Si vous avez déjà ajouté le contrôle du panneau dans l'aspx (design-view) et si vous souhaitez utiliser la réponse acceptée ci-dessus dans le fichier .cs (code-behind)., Alors vous serez en cours d'exécution en erreurs de type. Donc dans ce cas, vous pourriez utiliser de cette façon. S'il vous plaît noter le petit boîtier "nouveau".

Panel1.Controls.Add(new LiteralControl("<br>")); 
0

dans le panneau de contrôle u peut utiliser le contrôle lable qui ont "valeur dans le texte propriété

Label lb1 = new Label(); 
lb1.Text = "<br>"; 

Panel1.Controls.Add(lb1);  
Questions connexes