2011-07-19 34 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"); 
     } 

    } 
相关问题