在asp:DropDownList Items中设置不同的颜色

时间:2016-04-28 22:39:25

标签: c# asp.net

我有一个表格,有4个不同的选项(项目) 我需要做的就是在没有PostBack的情况下从客户端设置不同的颜色。

产品:

  • 选择...(白色)
  • 完成(绿色)
  • 跑步(黄色)
  • 等待SEV1(红色)

有人可以帮我吗?

编辑(使用下拉代码)

is.vector(vector)

我只是为此寻找解决方案,但还没有成功。这就是为什么我还没有尝试过任何东西。

3 个答案:

答案 0 :(得分:3)

此标记为每个项目应用不同的背景颜色,并设置onchange事件处理程序:

<asp:DropDownList ID="DropDownList1" runat="server" onchange="SetDropDownListColor(this);">
    <asp:ListItem style="background-color: White !important;" >Select...</asp:ListItem>
    <asp:ListItem style="background-color: Green !important;" >Complete</asp:ListItem>
    <asp:ListItem style="background-color: Yellow !important;" >Running</asp:ListItem>
    <asp:ListItem style="background-color: Red !important;" >Waiting in SEV 1</asp:ListItem>
    <asp:ListItem style="background-color: Blue !important;" >No Batch</asp:ListItem>
</asp:DropDownList>

以下Javascript确保选择框的颜色与所选项目的颜色匹配:

function SetDropDownListColor(ddl) {
    for (var i = 0; i < ddl.options.length; i++) {
        if (ddl.options[i].selected) {
            switch (i) {
                case 0:
                    ddl.style.backgroundColor = 'White';
                    return;

                case 1:
                    ddl.style.backgroundColor = 'Green';
                    return;

                case 2:
                    ddl.style.backgroundColor = 'Yellow';
                    return;

                case 3:
                    ddl.style.backgroundColor = 'Red';
                    return;

                case 4:
                    ddl.style.backgroundColor = 'Blue';
                    return;
            }
        }
    }
}

!important修饰符在列表中项目的标记中设置,以覆盖在Javascript函数中设置为整个控件的背景颜色。

为了在回发后保留DropDownList的颜色,可以将以下代码行添加到Javascript块中。它为页面的load事件定义了一个处理程序,其中所选项目的颜色应用于选择框:

window.addEventListener('load', function () { SetDropDownListColor(document.getElementById('<%= DropDownList1.ClientID %>')); }, false);

答案 1 :(得分:0)

试用以下代码

在filename.aspx.cs文件中......

protected void Page_Load(object sender,EventArgs e)     {         if(!IsPostBack)         {             System.Drawing.Color c1 = new System.Drawing.Color();             输入t = c1.GetType();             int row;             foreach(t.GetProperties()中的System.Reflection.PropertyInfo p1)             {                 ColorConverter d = new ColorConverter();                 尝试                 {

                DropDownList2.Items.Add(p1.Name);
                for (row = 0; row < DropDownList2.Items.Count - 1; row++)
                {
                    DropDownList2.Items[row].Attributes.Add("style",
                          "background-color:" + DropDownList2.Items[row].Value);
                  }
                }
            catch
            {
                // Catch exceptions here
            }
        }
}

}

答案 2 :(得分:0)

这对我有用...

ListItem listItem = new ListItem();
listItem.Attributes.Add("style", "background-color: Gold !important;");
listItem.Text = "Apply for funding";

dlPayment.Items.Add(listItem);