2008-10-07 52 views
1

当我添加& nbsp;或者& eacute;到一个listitem的文本值,它将显示HTML实体的代码而不是结果(一个空格或é)。不要在下拉列表中显示HTML代码和实体

我可以添加“物理”不间断空格或特殊字符,但如果可能,我想避免这种情况。有时存储在数据库中的数据是经过编码的,我不希望在显示数据之前总是处理数据。

任何解决方案?

感谢

编辑注:前面的描述指出它是关于一个下拉列表模拟树状,但它仅仅是一个例子;我不能也不想用其他任何东西替换掉dropdownlist。

回答

6

ListItems会自动进行HtmlEncoded。

您可以事先HtmlDecode列表中的项目,所以他们HtmlEncoded当你得到正确的字符:

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

标准的下拉列表在代表treeview方面很差。

如果顶层不可选(参见optgroup元素[1]),他们可以处理深一层的水平,但除此之外,我建议您按照需要采用尽可能多的嵌套(有序或无序)记住子列表进入其父列表中的列表项),并包括一个带有每个可选列表项的复选框或单选按钮。

如果需要,可以添加一些JavaScript来操作类以创建下拉效果。

[1] Optgroup应该能够做得更深,但是IIRC浏览器支持很糟糕。

1

您可以将<optgroup>标记用于分层(即树状)下拉菜单。

<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

尝试使用ul(ol)并使用css。如果满足某些要求,您可以使用jquery更改样式(li具有值属性)

0

在提到的问题是不是我看到使用ASP的当前版本。 NET - 当我尝试它时,以下&ndash;都被正确渲染:

<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>