Asp.net中多彩下拉框的实现

aspx:

<table>
                <tr>
                    <td>
                        <asp:DropDownList ID="ddlMultiColor" OnSelectedIndexChanged="ddlMultiColor_OnSelectedIndexChanged"
                            runat="server" AutoPostBack="true">
                        </asp:DropDownList>
                    </td>
                    <td>
                        <div id="msgColor" runat="server">
                        </div>
                    </td>
                </tr>
            </table>

 

cs:

using System;

using System.Web;

using System.Reflection;
using System.Drawing;
using System.Collections.Generic;

 

 

 protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack == false)
        {
            populateDdlMultiColor(); //51aspx.com
            colorManipulation();
        }

    }

    private void populateDdlMultiColor()
    {
        ddlMultiColor.DataSource = finalColorList();
        ddlMultiColor.DataBind(); //liudao 翻译
    }


    private List<string> finalColorList()
    {
        string[] allColors = Enum.GetNames(typeof(System.Drawing.KnownColor));
        string[] systemEnvironmentColors =
          new string[(
          typeof(System.Drawing.SystemColors)).GetProperties().Length];

        int index = 0;

        foreach (MemberInfo member in (
          typeof(System.Drawing.SystemColors)).GetProperties())
        {
            systemEnvironmentColors[index++] = member.Name;
        }

        List<string> finalColorList = new List<string>();

        foreach (string color in allColors)
        {
            if (Array.IndexOf(systemEnvironmentColors, color) < 0)
            {
                finalColorList.Add(color);
            }
        }
        return finalColorList;
    }

    private void colorManipulation()
    {
        int row;
        for (row = 0; row < ddlMultiColor.Items.Count - 1; row++)
        {
            ddlMultiColor.Items[row].Attributes.Add("style",
                "background-color:" + ddlMultiColor.Items[row].Value);
        }
        ddlMultiColor.BackColor =
            Color.FromName(ddlMultiColor.SelectedItem.Text);

    }

    protected void ddlMultiColor_OnSelectedIndexChanged(object sender,
        EventArgs e)
    {
        ddlMultiColor.BackColor = Color.FromName(ddlMultiColor.SelectedItem.Text);
        colorManipulation();
        ddlMultiColor.Items.FindByValue(ddlMultiColor.SelectedValue).Selected =
            true;
        msgColor.Attributes.Add("style", "background:" +
            ddlMultiColor.SelectedItem.Value + ";width:30px;height:25px;");
    }

 

posted on 2012-11-26 09:42  carekee  阅读(280)  评论(0编辑  收藏  举报