2017-03-23 41 views
0

我有這個下拉列表。選擇後我需要顯示顏色,如果可能的話,當懸停在物品上時,我需要透明選擇而不是「藍色」。在asp下拉列表中選擇需要的顏色

我需要的是這樣的

enter image description here

<asp:DropDownList ID="ddlTimlineStatus" runat="server" Width="50px" CssClass="DropDownListStyle"> 
                <asp:ListItem Value="G" style="background-color:green; color:green;"></asp:ListItem> 
                <asp:ListItem Value="Y" style="background-color:yellow; color:yellow;"></asp:ListItem> 
                <asp:ListItem Value="R" style="background-color:red; color:red;"></asp:ListItem> 
               </asp:DropDownList> 

這裏選擇了紅色,但不知道爲什麼它不會顯示出來。 enter image description here

將鼠標懸停在您看到的藍色上實際上是紅色,但選中時顯示爲藍色。 enter image description here

+0

藍在這種情況下,這將出現在項目懸停默認的顏色,你可以在CSS改變他們,只要把基於id屬性和設置CSS他們的ID。
示例 - 將呈現爲 Saurabh

+1

在web瀏覽器中查看輸出html以幫助理解正在發生的事情是很有用的。有時,aspx不會按照假定呈現,並且您的樣式標記可能無法與正確的容器關聯。 – Phill

回答

0

這就是我解決它的方法。 ASPX:

<asp:DropDownList ID="ddlOverallStatus" runat="server" AutoPostBack="true" OnLoad="ddlOverallStatus_Load" 
                CssClass="DropDownListStyleOverview" OnSelectedIndexChanged="ddlOverallStatus_SelectedIndexChanged" > 
                <asp:ListItem Value="0">Green</asp:ListItem> 
                <asp:ListItem Value="1">Yellow</asp:ListItem> 
                <asp:ListItem Value="2">Red</asp:ListItem> 
               </asp:DropDownList> 

後面的代碼:

protected void ddlOverallStatus_Load(object sender, EventArgs e) 
    { 
     ddlOverallStatus = setColor(ddlOverallStatus, false); 
    } 
    protected void ddlOverallStatus_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     ddlOverallStatus = setColor(ddlOverallStatus, true); 
    } 
    protected DropDownList setColor(DropDownList ddl, bool load) 
    { 
     if (load) 
     { 
      string s1 = ddl.SelectedItem.Text.ToString(); 
      if (s1 == "Green") 
       ddl.BackColor = System.Drawing.Color.FromArgb(0,255,0); 
      else 
       ddl.BackColor = System.Drawing.Color.FromName(s1); 
     } 
     else 
     { 
      string s1 = ddl.SelectedItem.Text.ToString(); 
      if (s1 == "Green") 
      { 
       ddl.BackColor = System.Drawing.Color.FromArgb(0, 255, 0); 
       ddl.ForeColor = System.Drawing.Color.FromArgb(0, 255, 0); 
      } 
      else 
      { 
       ddl.BackColor = System.Drawing.Color.FromName(s1); 
       ddl.ForeColor = System.Drawing.Color.FromName(s1); 
      } 
     } 
     return ddl; 
    } 
0

如果它通過使用CSS渲染的瀏覽器select下拉菜單,你可以改變的選擇background,但你不能改變高亮顯示顏色(當你懸停)! (對於Chrome的&其他WebKit瀏覽器)

你可能想改變select塊到ul, li結構。

+0

對不起,對於最近的回覆,我回來繼續這項工作。你把它改爲ul,li構造是什麼意思? – Sak

+0

使用無序列表。請查看[MDN artcile](https://developer.mozilla.org/en/docs/Web/HTML/Element/ul)以供參考。 – nashcheez