您现在的位置: 网页制作教程网 >> 网络编程 >> Asp.net 教程 >> ASP.NET 实例教程 >> 文章正文

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

作者:动态网站…

来源:动态网站制作指南

热度:

2007-7-7 13:15:14

    现在让我们来看一下populateDdlMultiColor() 函数

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

    finalColorList()方法

private List 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 finalColorList =  new List();
           
    foreach (string color in allColors)
    {
        if (Array.IndexOf(systemEnvironmentColors, color) < 0)
        {
            finalColorList.Add(color);
        }                          
    }
    return finalColorList;
}


    System.Drawing.KnownColor是Asp.net系统本身自带颜色,我已经通过枚举列出了这些颜色并通过 finalColorList()函授进行绑定。为了实现该功能,我使用了最基本的枚举特征之一:Enum.GetNames() 共享方法,该方法对枚举内容进行检测并输出结果为字符串序列,该字符串中每个值都对应枚举中的每个结果。
    然而,该方法还是有些问题的。按照上面的思路,枚举金额过中会包括系统环境颜色,比如“Active Border(注:活动边框)”,为了解决该问题,我扩展了系统环境颜色。我用了System.Reflection.MemberInfo类。
    这里我用System.Drawing.SystemColors属性填充systemEnvironmentColors ,然后创建一个名称为finalColorList 的图形列表,在finalColorList 中我只调用已知颜色,但是不在系统环境颜色中。然后把finalColorList绑定到ddlMultiColor中。至此,我们已经有了一个包括全部颜色名称的下拉框,下面让我们来操作一下:
http://www.knowsky.com/
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);//liudao翻译
}

    下拉框中的每一行背景颜色的Style]属性都与该行显示的颜色名称对应的。在OnSelectedIndexChanged 事件中下拉框中被选中的行通过下面的函数结合<div>标签进行高亮显示,同时右侧的矩形颜色也随之变化。

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;");
}

    至此,我们学会了如果获取System.Drawing并排出系统环境颜色,并绑定颜色名称到下拉列表。

上一页  [1] [2] 


我来说两句:

1分 2分 3分 4分 5分
姓名: *


* 请各位网友遵纪守法并注意语言文明。
网站简介 | 联系方式 | 意见建议 | 版权说明
Copyright © 2007 All rights reserved
滇ICP备06006992号