asp.net - 如何在ListItem文本属性中呈现html标签?

时间:2009-03-03 18:20:03

标签: asp.net html css

我有一个DropDownList控件,通过服务器端填充。

我使用For Each [datarow]循环并创建一个New ListItem

在DataRow中是一个ID为'Title'的列;该字段可以包含< B>或者< I>标签。 (例如“[标题]在< i> [父母标题]< / i>”)

我面临的问题是当我[DropDownList] .Controls.Add([ListItem])时,它按字面意思呈现文本...所以它显示< B>或者< I>字面上的标签,并没有粗体/斜体字体。

我一直试着寻找答案,有人可以指出我正确的方向吗?

4 个答案:

答案 0 :(得分:4)

DropDownList控件在hhtml代码中呈现为select元素,ListItem控件呈现为option元素。 option元素不支持文本中的html格式。某些浏览器可能支持整个option文本的某些样式,但没有浏览器支持部分文本的样式。

如果您需要在下拉列表中使用html格式,您必须使用DHTML制作自己的替换下拉列表控件,或找到已经完成此操作的人。

答案 1 :(得分:2)

您可以尝试为每个列表项添加样式属性,但我不确定在不同的浏览器中是否普遍支持它。

ListItem li = new ListItem(dr["Name"], dr["Course"]);
if (bold) li.Attributes.Add("style", "font-weight:bold");
listcontrol.Items.Add(li);

重新阅读您的问题我注意到您想要在列表中的单个项目中混合普通和粗体文本。我几乎可以肯定使用标准下拉列表不支持此功能。我想你需要看看使用一个模拟下拉列表的基于CSS的控件。

答案 2 :(得分:0)

如果您需要使用粗体和斜体格式,我建议您使用.net Literal控件作为下拉列表的占位符。然后在回发或数据绑定时,您可以遍历结果集,手动生成HTML代码(因为它不是那么复杂),然后将生成的HTML插入到Literal控件中。

答案 3 :(得分:0)

确实这是不可能的。

你有几个选择虽然它们有一些小的缺点,因为它们的行为并不像下拉列表。在大多数解决方案中,您只能使用鼠标选择一个选项,而不是键入几个字符。当然可以对此行为进行编程,但这需要一些时间和精力。

我找到的替代品是:

jquery solution from marghoob suleman

jquery solution from sanchez salvador