티스토리 뷰

반응형

 

그리드뷰에서 자동크기 설정

DevExpress GridView에서 칼럼의 크기를 자동으로 조절되도록할 수 있다. 기본으로 칼럼을 생성하면 width=75 사이즈로 되어있는데 실제 컴파일해보면 크기는 반영되지 않는다.

 

 

그 이유는 기본적으로 gridview의 OptionsView -> ColumnAutoWidth = true 옵션으로 되어있기 때문이다.

 

 

 

 

 

true로 되어있는 경우 칼럼별 width 사이즈는 무시하고 Layout에서 설정해놓은 칼럼의 사이즈 비율에 따라서 화면에 출력된다. 현재 Layout에서 아이디 칼럼의 비율이 15% 정도 된다면, 컴파일 후 화면에 출력되는 그리드 전체 사이즈 중 15% 비율로 아이디 칼럼이 출력된다. 그리드뷰 사이즈가 줄면 칼럼 사이즈도 줄고 그리드 사이즈가 커지면 칼럼 사이즈도 커진다.

 

 

 

칼럼의 사이즈를 칼럼에 출력되는 문자 중 가장 긴 문자의 길이만큼 자동으로 크기 조절하기 위해서는 ColumnAutoWidth=false로 변경하고 GridControl.DataSource에 데이터 바인딩 후 GridView.BestFitColumns() 옵션을 추가하면 된다.

 

 

 


 

데이터 바인딩 후 gridview에 BestFitColumns 옵션 추가

DataTable gridInfo = new DataTable();
gridInfo.Columns.Add("id");
gridInfo.Columns.Add("name");
gridInfo.Columns.Add("addr");

gridInfo.Rows.Add();
gridInfo.Rows[gridInfo.Rows.Count - 1]["id"] = "1";
gridInfo.Rows[gridInfo.Rows.Count - 1]["name"] = "홍길동";
gridInfo.Rows[gridInfo.Rows.Count - 1]["addr"] = "경기도 수원시 한국동";

gridInfo.Rows.Add();
gridInfo.Rows[gridInfo.Rows.Count - 1]["id"] = "2";
gridInfo.Rows[gridInfo.Rows.Count - 1]["name"] = "뽀로로";
gridInfo.Rows[gridInfo.Rows.Count - 1]["addr"] = "경기도 안양시 한국동";

gridInfo.Rows.Add();
gridInfo.Rows[gridInfo.Rows.Count - 1]["id"] = "3";
gridInfo.Rows[gridInfo.Rows.Count - 1]["name"] = "워랜버핏";
gridInfo.Rows[gridInfo.Rows.Count - 1]["addr"] = "서울시 강남구 부자동";

gridInfo.Rows.Add();
gridInfo.Rows[gridInfo.Rows.Count - 1]["id"] = "4";
gridInfo.Rows[gridInfo.Rows.Count - 1]["name"] = "손흥민";
gridInfo.Rows[gridInfo.Rows.Count - 1]["addr"] = "서울시 강남구 부자동 토트넘아파트";

gridInfo.Rows.Add();
gridInfo.Rows[gridInfo.Rows.Count - 1]["id"] = "5";
gridInfo.Rows[gridInfo.Rows.Count - 1]["name"] = "홍명보";
gridInfo.Rows[gridInfo.Rows.Count - 1]["addr"] = "서울시 강남구 부자동 축구아파트";

gridInfo.Rows.Add();
gridInfo.Rows[gridInfo.Rows.Count - 1]["id"] = "6";
gridInfo.Rows[gridInfo.Rows.Count - 1]["name"] = "박지성";
gridInfo.Rows[gridInfo.Rows.Count - 1]["addr"] = "서울시 강남구 부자동 유럽아파트";

gridInfo.Rows.Add();
gridInfo.Rows[gridInfo.Rows.Count - 1]["id"] = "7";
gridInfo.Rows[gridInfo.Rows.Count - 1]["name"] = "차두리";
gridInfo.Rows[gridInfo.Rows.Count - 1]["addr"] = "서울시 강남구 부자동 독일아파트";

gridControl1.DataSource = gridInfo.Copy();
gridView1.BestFitColumns(); // cell 에서 가장 길이가 긴 문자 기준으로 width 크기 자동 변경

 

칼럼별로 가장 길이가 긴 문자에 맞춰서 칼럼 사이즈가 자동으로 조절된다. 하지만 데이터가 많아질 경우 셀별로 하나씩 가장 큰 크기를 측정해서 칼럼 사이즈를 조절하기 때문에 데이터 바인딩 시간이 오래 걸리니 사용을 추천하지는 않는다.

 

 

반응형
댓글
공지사항