当我添加& nbsp;或者& eacute;对于listitem的文本值,它显示HTML实体的代码而不是结果(空格或é)。
我可以添加“物理”不间断空格或特殊字符,但我想尽可能避免这种情况。有时,存储在数据库中的数据是经过编码的,我不想在显示数据之前始终处理数据。
任何解决方案?
由于
编辑注释:之前的描述指出它是关于模拟树视图的下拉列表,但它只是一个例子;我不能也不想用其他任何东西替换下拉列表。
答案 0 :(得分:6)
ListItems自动进行HtmlEncoded。
您可以事先对列表项进行Html解码,因此当它们是HtmlEncoded时,您将获得正确的字符:
DropDownList1.DataSource = new List<string> { Server.HtmlDecode("A…"), Server.HtmlDecode("B C") };
DropDownList1.DataBind();
答案 1 :(得分: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>
答案 2 :(得分:0)
标准下拉列表在表示树视图时非常差。
如果最高级别不可选,他们可以处理一个深度(参见optgroup元素[1]),但除此之外,我建议采用与嵌套一样多的常规列表(有序或无序)你需要(记住子列表进入其父列表中的列表项)并包括每个可选列表项的复选框或单选按钮。
然后可以添加一些JavaScript来操作类,以便在需要时创建下拉效果。
[1] Optgroup应该能够更深入,但是,IIRC,浏览器支持很糟糕。
答案 3 :(得分:0)
尝试使用ul(ol)并使用css。如果满足某些要求,则可以使用jquery更改样式(li具有value属性)
答案 4 :(得分:0)
问题中描述的问题不是我使用当前版本的ASP.NET看到的 - 当我尝试时,以下–
都正确呈现:
<asp:RadioButtonList ID="Visibility" runat="server">
<asp:ListItem Value="public" Text="Public – All users"></asp:ListItem>
<asp:ListItem Value="private">Private – Only you</asp:ListItem>
</asp:RadioButtonList>