보통은 이렇게 폼에 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" 가 아니면 정확히 가운데 정렬이 되지 않으므로 주의 해야 한다.



