본문 바로가기
IT-개발,DB

[개발/asp.net] 서버컨트롤에 열거형 값 바인딩하기

by SB리치퍼슨 2010. 12. 10.

쌈꼬쪼려 소백촌닭

출처 : http://blog.naver.com/tear230/100020088426

ColorType이라는 열겨형 객체가 아래와 같이 선언되어 있고,

 enum ColorType { Red = 1, Green = 2, Blue = 4, Yellow = 8 };

 DropDownList1이라는 드롭다운리스트 컨트롤이 아래와 같이 선언되어 있다고 할경우

 <asp:DropDownList runat="server" DataTextField="Key" DataValueField="Value"
id="DropDownList1">

 DropDownList1에 ColorType을 아래코드처럼 바인딩 하려고 하면 에러가 발생합니다.

 DropDownList1.DataSource = ColorType;

이럴경우 해쉬테이블로 만들어 반환하는 메서드를 만들어서 사용한다.

public static Hashtable BindToEnum( Type enumType )
{  
    string[] names = Enum.GetNames( enumType );   //열거형의 이름 배열

    Array values = Enum.GetValues( enumType );   // 열거형의 값의 배열  
    Hashtable ht = new Hashtable();
    for (int i = 0; i < names.Length; i++)   

        ht.Add(names[i], (int)values.GetValue(i));
    return ht;
}

바인딩할때는...

//this.DropDownList1.DataValueField = "Value";
//this.DropDownList1.DataTextField = "Key";

this.DropDownList1.DataSource = BindToEnum( typeof( ColorType) );
this.DropDownList1.DataBind();

반응형

댓글