2010-02-01 157 views
0

我有一個下拉列表,我已經手動數據綁定。我目前獲取數據,遍歷每個項目,並根據項目中的值更改單個ListItem的CSS。如何在下拉列表的列表項中強制換行?

例如:

foreach (Site mySite in myList) 
     { 
      ListItem li = new ListItem(mySite.FullAddress, mySite.Id.ToString()); 
      if (mySite.DisabledFlg) 
      { 
       li.Attributes.Add("style", "color:#999"); 
      } 
      this.Items.Add(li); 
     } 

我試圖強制文本在ListItem在某些點突破。從數據源中檢索的字符串當前在任何應該有換行符的位置都有一個「\ r \ n」。這適用於在正常文本框中顯示,但它不適用於listitem。 我試過用"<br>"替換「\ r \ n」,但是當我這樣做時,它只是在listem中顯示<br>以及其餘的文本。我嘗試在帶有寬度屬性的"div"中包裝listitem內容,但它也只是在ListItem文本中直接顯示"div"標記。 我也試着添加以下的列表項的屬性在綁定:

   li.Attributes.Add("width", "100px"); 

但是,這並沒有導致任何變化無論是。

我見過自定義下拉列表控件,其中有多行列表項。我如何獲得相同的結果?

+0

「我看過定製的下拉列表控件,它們中有多行列表項」 - 任何公共URL都可以指向我們,所以我們知道你在做什麼? – AakashM 2010-02-01 17:27:53

+0

我最終做的是使用AjaxControlToolkit的DropDownExtender使用帶有可選行的文本框和單列gridview製作假下拉列表。它認爲我正在尋找的結果,因爲它不可能真正與標準的下拉列表控件。 – 2010-02-03 18:05:34

回答

3

我不認爲這是可能的。 DropDownList控件呈現一個<select>元素,但它不是爲子元素<option>設計的換行符。

但是,實現同樣效果的另一種方法是在將數據綁定到DropDownList之前處理數據。您可以在換行符上分割並將相同的DataValue分配給這些重複的項目。你最終會與HTML類似如下:

<select> 
    <option value="A">A</option> 
    <option value="A">A.2</option> 
    <option value="B">B</option> 
</select> 

您可能還可以找到一些花哨的Javascript控件或插件,可以模擬一個下拉控制,但允許你比平原select元素更多的靈活性。

2

我想你必須添加換行符作爲自己的列表項。然後,您可以執行一些Javascript和/或驗證,以防止用戶選擇該「項目」。