我似乎无法弄清楚这一点。我有一个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来设置整个列表的文本颜色。但我无法设置单个元素的前景色。
答案 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");
}
}