Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

닷넷!스킬업

닷넷 기술을 조금 더 깊이 다루고자 합니다. 특정 주제를 정하지 않고 이슈 발생 시 마다 체계적으로 정리하여 공유하겠습니다. 이전 자료를 옮겨온 곳이기도 합니다.

바인딩 가능한 객체 만들기

작성자 : 박종명
최초 작성일 : 2008-06-16 (월요일)
최종 수정일 : 2008-06-16 (월요일)
조회 수 : 2938

* 바인딩 가능한 객체 만들기

ASP.NET 1.1 DataGird ASP.NET 2.0 GridView 는 데이터 집합을 Grid 형태로 표현해 주는 유용한 컨트롤이다.

 

일반적으로 이 컨트롤을 사용할 때에는 데이터베이스로부터 결과 집합 셋을 얻어 와서 DataSet 과 같은 데이터 집합 객체를 바인딩 시킨다.

 

GridView1.DataSource = DataSet1;

 

이것이 가능한 이유는 GridView DataSource 로 받아들이는 객체의 규약된 인터페이스가 있기 때문에 가능한 것이다.

 

먼저 DataSet 의 시그너처를 살펴 보자

 

[SerializableAttribute]

public class DataSet : MarshalByValueComponent, IListSource, IXmlSerializable, ISupportInitializeNotification,

        ISupportInitialize, ISerializable

 

 

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 의 컬럼 제목으로 표현되고 그 값들이

해당 컬럼에 표현되는 것이다.

이름
비밀번호
홈페이지
OY <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요