Jquery或Javascript只更改所选DropDownList项的文本颜色

时间:2011-07-19 20:49:12

标签: c# javascript jquery asp.net drop-down-menu

我似乎无法弄清楚这一点。我有一个asp DropDownList控件。这将由我从SQL获得的类数据列表填充。 DropDownList位于ASP Repeater中。我向一个触发C#方法的asp控件添加了一个OnSelectedIndexChanged属性。我在DropDownList的初始化方法中有一些逻辑,它将特定项目的文本颜色设置为红色(取决于该项目类中的值)。每当选择该项目时,文本不是红色。当文本是列表中的项目时,文本仅为红色。如何更改所选项目的颜色?我似乎无法弄清楚这一点。我需要C#端的OnSelectedIndexChanged方法来触发事件来过滤另一个选择器。因此,当选择器被更改时,我已经触发了一个事件。但是我尝试了以下内容:

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

以上不起作用。但我认为这不是问题。在检查元素之后(在上面的实现之前),样式颜色属性已经设置为红色。这些只是不适用于当前选定的项目吗?

我可以通过设置forecolor来设置整个列表的文本颜色。但我无法设置单个元素的前景色。

4 个答案:

答案 0 :(得分:1)

除了一些最新版本的firefox和chrome之外,我认为你通常不会这样做。传统上我们从来没有对HTML SELECT元素进行过多的样式控制,因为它们最初只是一个标准的桌面UI小部件,并且已经进入页面。

有关详细信息,请参阅此答案:How to style a <select> dropdown with CSS only without JavaScript?

那就是说,您确定不应该在Style["color"]而不是option上设置attribute吗?

答案 1 :(得分:0)

Here是一个带有选项标签的jsfiddle,用前景色设置样式。 Chrome的工作方式,选项颜色仅在下拉列表打开时才会生效。

答案 2 :(得分:0)

选择控件通常是rendered by the operating system(而不是浏览器),并且实现从浏览器到浏览器和操作系统到操作系统的差异很大。因此,通常不可能使用CSS可靠地设置选择控件的样式。

但是,有许多技术可以解决这个限制。其中最常见的是用动态HTML列表替换选择。您可以结合使用CSS和Javascript来使列表以与select控件非常相似的方式运行。

有许多jQuery插件可供您努力工作。您可以使用this page作为起点。

答案 3 :(得分: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");
        }

    }