如何更改禁用的Asp.net DropDownList的文本颜色

时间:2016-01-22 17:57:36

标签: c# asp.net

我在这个问题上搜索了一段时间,无法在任何地方找到合适的答案。

我有一个asp DropDownList,它根据窗体是否处于视图模式而被禁用和启用。我遇到的问题是DropDownList.Enabled = false时文本难以阅读(浅灰色)。

我通过将DropDownList传递给某些方法解决了这个问题。

public void DisableDDL(ref DropDownList DDL)
{
    DDL.BackColor = System.Drawing.Color.LightGray;
    foreach (ListItem i in DDL.Items)
    {
        if (i != DDL.SelectedItem)
        {
            i.Enabled = false;
        }
    }
}

public void EnableDDL(ref DropDownList DDL)
{
    DDL.BackColor = System.Drawing.Color.White;
    foreach (ListItem i in DDL.Items)
    {
        i.Enabled = true;                        
    }
}

还有其他办法吗? 我尝试过使用css但是没有用。

<style>
.disabledStyle
{
    color: black;        
}
</style>

myDDl.CssClass = "disabledStyle";

4 个答案:

答案 0 :(得分:0)

您需要将样式应用于每个单独的ListItem,而不是应用于DropDownList本身

答案 1 :(得分:0)

我刚刚放入一个下拉列表并将其设置为在控制器中启用false,然后我发现它有一个名为“aspNetDisabled”的类,我尝试使用CSS来改变它的颜色,它完美地工作。

<style>
    .aspNetDisabled 
    {
        color: #FFF;
        background-color: #000;
    }
</style>

在代码中,如果你把下拉列表“ddl.enabled = false”,它将是这样的:

<select name="DropDownList1" id="DropDownList1" disabled="disabled" class="aspNetDisabled"></select>

如果下拉列表被带有类的div包围,请使用该类来定义禁用的类:

<style>
    .MyCssClass[disabled] 
    {
        color: #FFF;
        background-color: #000;
    }
</style>

或尝试

:disabled,[disabled]
{
    -ms-opacity: 0.5;
    opacity:0.5;
}
</style>

如上所述: http://forums.asp.net/t/2028164.aspx?IE+11+disabled+buttons+links+not+shown+as+greyed+out

答案 2 :(得分:0)

dropdownlist控件没有readonly属性。但是,当您收到焦点时,您可以将焦点移动到另一个控件,这样可以防止它被更改并使文本保持黑色。

答案 3 :(得分:0)

最简单的方法:

<style>
    [disabled] { /* Text and background colour, medium red on light yellow */
    color:#933;
    background-color:#ffc;
    }

    </style>