2011-07-19 22 views
0

我似乎無法弄清楚這一點。我有一個asp DropDownList控件。這將從我從SQL獲得的數據的類列表中填充。 DropDownList在ASP中繼器中。我添加了一個OnSelectedIndexChanged屬性到引發C#方法的asp控件。我在DropDownList的初始化方法中有一些邏輯,它將特定項目的文本顏色設置爲紅色(取決於該項目類中的值)。無論何時選擇該項目,文本都不是紅色的。當文本是列表中的項目時,該文本僅爲紅色。我怎樣才能改變所選項目的顏色?我似乎無法弄清楚這一點。我需要C#端的OnSelectedIndexChanged方法來觸發一個事件來過濾另一個選擇器。所以我在選擇器改變時已經發射了一個事件。不過,我已經嘗試以下內容:Jquery或Javascript來改變一個選定的DropDownList的文本顏色項目

protected void ddlItem_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (sender != null) 
    { 
     DropDownList DropDownList1 = (DropDownList)sender; 
     DropDownList1.SelectedItem.Attributes.Add("color", "Red;"); 
    } 
} 

上述不起作用。但我不認爲這是問題。在檢查元素之後(在上述實現之前),樣式顏色屬性已經設置爲紅色。這些不適用於當前選擇的項目嗎?

我能夠通過設置forecolor來設置整個列表的文本顏色。但我無法設置單個元素的前景色。

+0

我強烈建議您儘量避免通過代理ForeColor,BackColor屬性間接設置HTML元素內聯樣式的方便MS路徑。我真的認爲你會很好地學習CSS和jQuery,以更好地控制你的UI,或者至少在你的控件上設置CSS類而不是直接設置樣式顏色。嘗試使HTML結構與樣式保持分離,以便日後維護和更改。 –

回答

1

我不認爲你通常可以做到這一點,除了在一些最新版本的Firefox和鉻。傳統上,我們從來沒有對HTML SELECT元素進行過多的樣式控制,因爲它們最初只是一個標準的桌面UI小部件,並且已經插入到頁面中。

詳情請參閱這樣的回答:How to style a <select> dropdown with CSS only without JavaScript?

這就是說,你確定在option你不應該設置Style["color"],而不是一個attribute

+0

你可以做一些樣式,但有必要了解這些限制。 – Pointy

0

Here是一個jsfiddle,帶有前景色的樣式標籤。 Chrome似乎有效,選項顏色只在下拉菜單打開時才起作用。

0

選擇控件通常是rendered by the operating system(而不是瀏覽器),並且實現差異很大,從瀏覽器到瀏覽器以及操作系統到操作系統。因此,使用CSS可靠地設計選擇控件通常是不可能的。

但是,有許多技術可以解決這個限制。最常見的一種是用動態HTML列表替換選擇。您可以使用CSS和Javascript的組合來使列表的操作方式與選擇控件非常相似。

有很多可用的jQuery插件可以爲您做好工作。您可以使用this page作爲起點。

0

DropDownList1.SelectedItem.Attributes.CssStyle.Add(「color」,「red」);

工作時,我試過了;它改變了所選項目的顏色。

<asp:DropDownList ID="ddlItem" runat="server" AutoPostBack="True" 
     onselectedindexchanged="ddlItem_SelectedIndexChanged"> 
    <asp:ListItem Text="hi" Value="hi" /> 
    <asp:ListItem Text="there" Value="there" /> 
    <asp:ListItem Text="testing" Value="testing" /> 
    </asp:DropDownList> 

    protected void ddlItem_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (sender != null) 
     { 
      DropDownList DropDownList1 = (DropDownList)sender; 
      DropDownList1.SelectedItem.Attributes.CssStyle.Add("color", "red"); 
     } 

    } 
相關問題