2009-03-03 73 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