일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 소년포비소프트
- 주신영
- 훈스닷넷
- 김춘배
- windows mobile 6.5
- 지승욱
- 마이크로소프트
- 윈도우폰7
- 신석현
- 서진호
- 윈도우폰
- MIX10
- 스마트폰
- 데브피아
- 거제도
- 헤이맨
- 윈도우 모바일
- 윈도데브
- 실버라이트 코리아
- 루나네스
- 윈모데브
- 신동혁
- winmodev
- 소년포비
- 윈도우모바일
- 옴니아2
- UX베이커리
- 안드로이드
- 황광진
- 쉐어포인트코리아
- Today
- Total
소년포비의 세계정복!!
바인딩 가능한 객체 만들기 본문
ASP.NET 1.1 의 DataGird 나 ASP.NET 2.0 의 GridView 는 데이터 집합을 Grid 형태로 표현해 주는 유용한 컨트롤이다.
일반적으로 이 컨트롤을 사용할 때에는 데이터베이스로부터 결과 집합 셋을 얻어 와서 DataSet 과 같은 데이터 집합 객체를 바인딩 시킨다.
GridView1.DataSource = DataSet1;
이것이 가능한 이유는 GridView가 DataSource 로 받아들이는 객체의 “규약된 인터페이스”가 있기 때문에 가능한 것이다.
먼저 DataSet 의 시그너처를 살펴 보자
DataSet 는 여러 개의 인터페이스를 구현하고 있는데 이 중 IListSource 인터페이스의 구현이 바로 앞서 말한 “규약된 인터페이스”가 되는 것이다. 즉 GridView 는 객체가 IListSource 을 구현하고 있다면 바인딩 가능하도록 설계된 것이다.
그러나 IListSource 만이 유일한 규약은 아니다 우리가 잘 알고 있는 ‘복합 객체 기법’ 인 IEnumerable 인터페이스도 DataSource 로 사용할 수 있다. 뿐만 아니라 IDataSource 도 가능하다.
결론적으로 GridView 에 데이터를 바인딩 하기 위한 데이터 소스는 ‘IListSource’ 나 ‘IEnumerable’ 혹은 ‘IDataSource’ 형식 중 하나이기만 하면 된다는 것이다.
그럼 실제로 우리가 만든 객체를 GridView 컨트롤에 바인딩 시키는 데모를 만들어 보자 우리의 Demo 에서는 전형적인 Iterator 패턴이 적용된 복합객체를 사용할 것이다. (샘플은 닷넷 2.0 으로 작성되었다)
먼저 복합객체의 요소에 해당하는 ‘책’ 이라는 클래스를 정의한다.
public class Book{ private string title; private int price; private string author; public Book(string title, int price, string author){ this.title = title; this.price = price; this.author = author; } public string Title{ get{return this.title; } } public int Price{ get{return this.price; } } public string Author{ get{return this.author; } } }
다음으로는 복합객체인 ‘책장’ 클래스를 정의한다. 이 클래스는 IEnumerable 를 구현하는 클래스가 된다 public class BookShelf : System.Collections.IEnumerable { public Book[] books; public int index = 0; public BookShelf(int size) { this.books = new Book[size]; } public void Add(Book book) { this.books[this.index] = book; index++; }
public System.Collections.IEnumerator GetEnumerator() { foreach (Book book in this.books) { yield return book; } } }
이제 데이터 소스로 사용될 복합 객체가 준비되었다.
실제 GridView 로 바인딩 되는 모습을 보기 위해 웹 폼 페이지에 GridView 를 하나 올리고 아래처럼 기술한다.
BookShelf bookShelf = new BookShelf(10);
for (int i = 0; i < 10; i++) { Book book = new Book( String.Format("제목 : 재미있는 책 - {0}", i), i * 1000, "저자 : ); bookShelf.Add(book); }
this.GridView1.DataSource = bookShelf; this.GridView1.DataBind();
아래 그림은 위 코드를 실행한 결과 화면이다.
결과에서 알 수 있듯이 복합객체의 각 요소들이 GridView 에 바인딩 되었다. 또한 각 요소의 공용 프로퍼티는 GridView 의 컬럼 제목으로 표현되고 그 값들이 해당 컬럼에 표현되는 것이다.
( Iterator 패턴에 대해 자세히 알고 싶으면 다음 기술문서를 참고하기 바랍니다. |
'프로그램 세상 > C#' 카테고리의 다른 글
WMI를 활용한 원격(로컬)컴퓨터 CPU사용량 실시간 모니터링 (0) | 2009.10.06 |
---|---|
윈폼or모듈단위에서 특정 웹페이지 호출하기 (0) | 2009.10.06 |
비 동기 웹 서비스 호출(Asynchronous WebService) (0) | 2009.10.06 |
[스크랩] LINQ 로 LIST 제네릭과 DICTIONARY 로 차집합 구해보기 (0) | 2009.10.05 |
윈폼에서 선그리기 (0) | 2009.10.05 |