[WPF]쿼리 결과셋을 ListView와 바인딩하기

쿼리 결과셋을 ListView와 바인딩하게 되면 여러모로 편리합니다.
한번 바인딩이 되면 그 다음부터 걱정할건 쿼리문이외에는 없어지거든요.
어떤 쿼리문을 던져도 그 결과가 그대로 리스트뷰로 표현됩니다.

아래는 제가 이번 프로젝트에서 사용한 OleDb 연결을 이용한방법입니다.
쿼리 결과를 DataTable에 담아내는것이 핵심입니다.
이렇게 보면 간단하지만 이 방법을 성공시키는데 까지는... 상당한 고통이 있었습니다;;;(별짓을 다 했죠..)

            // 쿼리 수행 후 결과를 DataTable에 담기
            OleDbConnection dbConnection = new OleDbConnection(conString);
            DataTable dt = new DataTable();
            OleDbDataAdapter adapter = new OleDbDataAdapter();
            try
            {
                adapter.SelectCommand = new OleDbCommand("SELECT * FROM TABLE", dbConnection);
                adapter.Fill(dt);           // 실제로 쿼리가 excute 되고, 결과는 dt에 저장이 된다.
            }
            catch (OleDbException e)
            {
                App.LogWrite(e.Message);  // 에러메세지는 로그창에 출력(로그창은 Custom Window 입니다)
                return null;
            }
            catch (Exception e)
            {
                App.LogWrite(e.Message);    
                return null;
            }

            // 컬럼이름
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                GridViewColumn col = new GridViewColumn();
                col.DisplayMemberBinding = new Binding(dt.Columns[i].ColumnName);
                this.grdview.Columns.Add(col);     // grdview : ListView.View 에 대입된 GridView 오브젝트
            }

            // ListView에 DataTable을 바인딩
            listview.DataContext = dt;
            Binding bind = new Binding();
            listview.SetBinding(ListView.ItemsSourceProperty, bind);


위 소스는 현재 프로젝트에 실제로 사용되는 코드입니다.
보강이 필요하다고 생각되시는 부분이 있으면 거침없는 댓글 부탁드립니다.


## 추가로 질문사항을 덧붙입니다. 아시는분은 댓글로 남겨주시면 감사하겠습니다.

1. 현재 WPF의 ListView 는 예전 ListView 콘트롤처럼 SubItem에 접근하는 방법이 없는거 같더군요.
    이미 나온 결과셋을 ListView에 출력하기 전에(또는 후에) 약간의 조작을 하고 싶은데 어떻게 하면 좋은지 모르겠습니다.
    (현재 저 위에 소스처럼 바인딩하면 ListView에 Index Number가 안나옵니다. 가장 원하는것은 ListView의 가장 왼쪽 컬럼에
     Index를 출력할 열을 만들어 Row번호를 좀 볼수 있으면 좋겠는데요..)

2. ListView의 출력결과를 좀더 이쁘게 하기 위해 Row의 BackGround 를 홀수와 짝수 별로 컬러를 다르게 하고 싶은데
    이것도 잘 안돼는군요.. @.@




by MusaPanz | 2008/06/19 14:01 | WPF | 트랙백 | 덧글(1)

트랙백 주소 : http://mahapunch.egloos.com/tb/3791095
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 지우개 at 2009/02/28 06:50
ListView의 CellTemplate 쪽을 보시면 ListView에 들어가는 아이템에 들어갈 항목들과 바인딩을 설정 할 수 있고, ItemTemplate에 ListViewItem의 Style을 넣으시면 디자인도 적용 가능합니다.

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶