日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
ASP.NET下拉框呈現(xiàn)不同顏色的實現(xiàn)

開發(fā)背景: 
有人曾經(jīng)要我開發(fā)一個根據(jù)不同選擇而顯示不同顏色的管理工具。我開始考慮利用下拉框來實現(xiàn)條目背景及顯示顏色根據(jù)條目名稱不同而進行變化,根據(jù)這個思路我在網(wǎng)上搜了半天也沒有找到任何相關(guān)的解決方案,最后我想到了一個比當初需求要復雜的方案(包括數(shù)據(jù)庫),所以我嘗試著找到一個更簡單的實現(xiàn)方案。

該文主要是演示如何讀取系統(tǒng)顏色并在下拉框中的每個條目中顯示對應(yīng)的顏色,該源碼主要展示以下內(nèi)容:
1、如何獲得System.Drawing.KnownColor顏色控件的列表枚舉
2、如何排除系統(tǒng)環(huán)境顏色,如“Active Border”
3、如何分配顏色到下拉框的每個條目 
ASP.NET下拉框代碼詳解:
命名下拉框為ddlMultiColor 來顯示顏色名稱及顏色,用

標簽顯示右側(cè)矩形結(jié)果,Aspx代碼如下

  
 
 
  1. < table> 
  2. < tr> 
  3. < td> 
  4. < asp:DropDownList ID ="ddlMultiColor"    
  5. OnSelectedIndexChanged="ddlMultiColor_OnSelectedIndexChanged" 
  6. runat="server" AutoPostBack="true"> 
  7. < /asp:DropDownList> 
  8. < /td> 
  9. < td> 
  10. < div id="msgColor" runat="server"> 
  11. < /div> 
  12. < /td> 
  13. < /tr> 
  14. < /table> 

ASP.NET下拉框的實現(xiàn)需求:在cs文件中我們需要引用以下命名空間:

using System;

using System.Web;

using System.Reflection;

using System.Drawing;

using System.Collections.Generic;

我們先看一下Page_Load事件,在Page_Load中我們對選中的下拉列表進行處理顯示

  
 
 
  1. protected void Page_Load(object sender, EventArgs e) 
  2. if (Page.IsPostBack == false) 
  3. populateDdlMultiColor(); //51aspx.com 
  4. colorManipulation(); 

現(xiàn)在讓我們來看一下populateDdlMultiColor() 函數(shù)

  
 
 
  1. private void populateDdlMultiColor() 
  2. {         
  3. ddlMultiColor.DataSource = finalColorList(); 
  4. ddlMultiColor.DataBind(); //liudao 翻譯 
  5. finalColorList()方法 
  6. private List finalColorList() 
  7. {  
  8. string[] allColors = Enum.GetNames(typeof(System.Drawing.KnownColor)); 
  9. string[] systemEnvironmentColors =  
  10. new string[( 
  11. typeof(System.Drawing.SystemColors)).GetProperties().Length]; 
  12. int index = 0; 
  13. foreach (MemberInfo member in ( 
  14. typeof(System.Drawing.SystemColors)).GetProperties()) 
  15. systemEnvironmentColors[index ++] = member.Name;             
  16. List finalColorList =  new List(); 
  17. foreach (string color in allColors) 
  18. if (Array.IndexOf(systemEnvironmentColors, color) < 0
  19. finalColorList.Add(color); 
  20. }                            
  21. return finalColorList; 

System.Drawing.KnownColor是Asp.net系統(tǒng)本身自帶顏色,我已經(jīng)通過枚舉列出了這些顏色并通過finalColorList()函授進行綁定。為了實現(xiàn)該功能,我使用了最基本的枚舉特征之一:Enum.GetNames() 共享方法,該方法對枚舉內(nèi)容進行檢測并輸出結(jié)果為字符串序列,該字符串中每個值都對應(yīng)枚舉中的每個結(jié)果。

然而,該方法還是有些問題的。按照上面的思路,枚舉金額過中會包括系統(tǒng)環(huán)境顏色,比如“Active Border(注:活動邊框)”,為了解決該問題,我擴展了系統(tǒng)環(huán)境顏色。我用了System.Reflection.MemberInfo類。

這里我用System.Drawing.SystemColors屬性填充systemEnvironmentColors ,然后創(chuàng)建一個名稱為finalColorList 的圖形列表,在finalColorList 中我只調(diào)用已知顏色,但是不在系統(tǒng)環(huán)境顏色中。然后把finalColorList綁定到ddlMultiColor中。至此,我們已經(jīng)有了一個包括全部顏色名稱的下拉框,下面讓我們來操作一下:

 
 
 
  1. private void colorManipulation() 
  2. int row; 
  3. for (row = 0; row < ddlMultiColor.Items.Count - 1; row++) 
  4. ddlMultiColor.Items[row].Attributes.Add("style",  
  5. "background-color:" + ddlMultiColor.Items[row].Value); 
  6. ddlMultiColor.BackColor =  
  7. Color.FromName(ddlMultiColor.SelectedItem.Text);//liudao翻譯 

下拉框中的每一行背景顏色的Style]屬性都與該行顯示的顏色名稱對應(yīng)的。在OnSelectedIndexChanged 事件中下拉框中被選中的行通過下面的函數(shù)結(jié)合

標簽進行高亮顯示,同時右側(cè)的矩形顏色也隨之變化。

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

至此,我們學會了如果獲取System.Drawing并排出系統(tǒng)環(huán)境顏色,并綁定顏色名稱到下拉列表。呈現(xiàn)不同顏色的ASP.NET下拉框就此實現(xiàn)。


當前標題:ASP.NET下拉框呈現(xiàn)不同顏色的實現(xiàn)
轉(zhuǎn)載來源:http://www.dlmjj.cn/article/cdpeshc.html