2008-10-07 18 views
1

Lorsque j'ajoute & nbsp; ou & eacute; à une valeur de texte d'un listitem, il affiche le code de l'entité HTML au lieu du résultat (un espace ou é).Ne pas afficher le code HTML et les entités dans les listes déroulantes

Je peux ajouter des espaces "physiques" insécables ou des caractères spéciaux, mais je voudrais éviter cela si possible. Parfois, les données stockées dans la base de données sont codées, et je ne veux pas toujours traiter les données avant de les afficher.

Une solution?

Merci

Modifier la note: la description précédente a fait remarquer qu'il était sur un dropdownlist simulant une vue arborescente, mais il était simplement un exemple; Je ne peux pas et ne veux pas remplacer la liste déroulante par autre chose.

Répondre

6

Les éléments de liste sont automatiquement codés en Html.

Vous pouvez HtmlDecode les éléments de la liste avant la main, quand ils sont HtmlEncoded-vous obtenir les caractères appropriés:

DropDownList1.DataSource = new List<string> { Server.HtmlDecode("A&hellip;"), Server.HtmlDecode("B&nbsp;C") }; 
DropDownList1.DataBind(); 
0

Les listes déroulantes standard sont très pauvres pour représenter les arborescences.

Ils peuvent gérer un niveau de profondeur si le niveau supérieur n'est pas sélectionnable (voir l'élément optgroup [1]), mais je suggère de prendre une liste régulière (ordonnée ou non) avec autant d'imbrications que nécessaire (rappelez-vous que les sous-listes vont à l'intérieur des éléments de liste dans leur liste de parents) et incluent une case à cocher ou un bouton radio avec chaque élément de liste sélectionnable.

Certains JavaScript pourraient alors être ajoutés pour manipuler les classes afin de créer un effet de liste déroulante si vous le souhaitez. [1] Optgroup devrait pouvoir aller plus loin mais, IIRC, le soutien de navigateur est sucky.

1

Vous pouvez utiliser la balise <optgroup> pour les menus déroulants hiérarchiques (c'est-à-dire arborescents).

<select> 
    <optgroup label="Parent 1"> 
     <option>Child 1.1</option> 
     <option>Child 1.2</option> 
    </optgroup> 
    <optgroup label="Parent 2"> 
     <option>Child 2.1</option> 
     <option>Child 2.2</option> 
    </optgroup> 
</select> 
0

Essayez avec ul (ol) et jouez avec le CSS. Vous pouvez utiliser jquery pour changer de style si certaines conditions sont remplies (li a l'attribut value)

0

Le problème décrit dans la question n'est pas ce que je vois à l'aide d'une version actuelle de l'ASP. NET - quand je l'essaie, les deux &ndash; suivants sont rendus correctement:

<asp:RadioButtonList ID="Visibility" runat="server"> 
     <asp:ListItem Value="public" Text="Public &ndash; All users"></asp:ListItem> 
     <asp:ListItem Value="private">Private &ndash; Only you</asp:ListItem> 
    </asp:RadioButtonList> 
Questions connexes