보통은 이렇게 폼에 DataGridView 를 놓고, 클릭 이벤트를 만들어서...
private void btnSearch_Click(object sender, EventArgs e) { SqlManager sqlManager = new SqlManager(); sqlManager.open(); SqlParameter[] sqlParams = new SqlParameter[2]; sqlParams[0] = new SqlParameter("@START_INDEX", SqlDbType.Int); sqlParams[0].Value = "1"; sqlParams[1] = new SqlParameter("@PAGE_SIZE", SqlDbType.Int); sqlParams[1].Value = "10"; string strSql = string.Empty; strSql = "select * from T_MEMBER_LIST"; DataSet dataSet = sqlManager.ExecuteDataSet( CommandType.Text, strSql, sqlParams ); grvMemberList.DataSource = dataSet.Tables[0]; sqlManager.Dispose(); }
이렇게 데이터를 바인딩 하면 된다.... 고 대부분의 책에는 설명이 되어 있다.
틀린말이야 아니지만, 이렇게 하면...
이렇게 조회한 값이 다 나와 버리는데다가, 헤더도 DB 의 명칭이 그대로 나와버려서, 일반적으로는 이렇게 쓰기는 좀 어렵다.
그래서 "grvMemberList.DataSource = dataSet.Tables[0];" 이런 식으로 통으로 바인딩 시키기 보다는, 좀 귀찮지만 일일히 하나식 바인딩 시켜주는 일이 많은데...
private void btnSearch_Click(object sender, EventArgs e) { SqlManager sqlManager = new SqlManager(); sqlManager.open(); SqlParameter[] sqlParams = new SqlParameter[2]; sqlParams[0] = new SqlParameter("@START_INDEX", SqlDbType.Int); sqlParams[0].Value = "1"; sqlParams[1] = new SqlParameter("@PAGE_SIZE", SqlDbType.Int); sqlParams[1].Value = "10"; string strSql = string.Empty; strSql = "select * from T_MEMBER_LIST"; DataSet dataSet = sqlManager.ExecuteDataSet( CommandType.Text, strSql, sqlParams ); grvMemberList.Columns.Clear(); grvMemberList.Columns.Add("strLoginName", "이 름"); foreach (DataGridViewColumn col in grvMemberList.Columns) { col.SortMode = DataGridViewColumnSortMode.NotSortable; col.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; col.HeaderCell.Style.Font = new Font("Arial", 12F, FontStyle.Bold, GraphicsUnit.Pixel); } foreach (DataRow r in dataSet.Tables[0].Rows) { int n = grvMemberList.Rows.Add(); grvMemberList.Rows[n].Cells[0].Value = r["strLoginName"].ToString(); } sqlManager.Dispose(); }
이렇게 함으로 해서 헤더도 원하는 디자인으로 설정할 수 있고, 데이터 부분도 세세하게 컨트롤이 가능하다.
"grvMemberList.DataSource" 를 바인딩 시킨다고 해서 안되는것은 아니지만, 차라리 이게 더 속편하다.
이렇게 조회한 값에서 선별적으로 표시할 수 있다.
참고로 "col.HeaderCell.Style.Alignment" 를 지정해서 헤더 부분을 가운데 정렬 할 수가 있는데, "col.SortMode" 가 "NotSortable" 가 아니면 정확히 가운데 정렬이 되지 않으므로 주의 해야 한다.