2009-03-03 33 views
2

我有一个通过服务器端填充的DropDownList控件。asp.net - 如何呈现ListItem文本属性中的HTML标记?

我使用For Each [数据行]环,并创建一个新的列表项

在DataRow的是与ID“标题”一栏;该字段可能包含< B>或< I>标签。 (例如“[标题]在<我> [父标题] </i>”)

我面临的问题是当我[DropDownList] .Controls.Add([ListItem])它呈现字面文字...所以它会直接显示< B>或< I>标记,而不会粗体/斜体显示字体。

我已经试过寻找答案,可有人请指出我在正确的方向吗?

回答

4

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

如果您需要下拉列表中的html格式,您必须使用DHTML创建自己的替换下拉列表控件,或者找到已经完成它的人。

2

您可以尝试向每个listitem添加样式属性,但我不确定跨不同浏览器支持这种方式。

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

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

+0

如果你看过我的问题,我说我担心格式的文本属性里面有html标签的字体,而不是格式化*整个* ListItem。在回答之前请仔细阅读。 – 2009-03-03 18:26:45

+1

正式注意。将来,如果我决定再次尝试帮助你,我会确保*仔细阅读。 – 2009-03-03 18:29:18

0

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

0

事实上,这是不可能的。

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

替代我发现是:

jquery solution from marghoob suleman

jquery solution from sanchez salvador