-
C# WinForms DevExpress GridControl 체크박스칼럼에서 체크한 것이 고정이 안 될 때, When the check is not fixed in the check column닷넷/WinForms 2021. 7. 7. 11:00반응형
DevExpress의 GridControl에서 칼럼 하나를 체크박스칼럼으로 만들고,
칼럼의 UnboundType을 Bound로 설정하고, FieldName이 checkcolumn이라고 하면
gridControl.DataSource = list 일때, list.checkcolumn이 있으면 bound 된 값대로 false 혹은 true를 가지게 되어
앞서 포스팅 한대로 설정했다는 가정하에
체크박스칼럼의 셀에서 체크박스에 체크하면 체크하는 대로 체크를 하지 않으면 하지 않은대로 설정 된다.
그런데 바운드 데이터와는 상관없는 칼럼인 경우
체크박스 칼럼이기때문에 UnboundType을 Boolean으로 설정하면
(FieldName은 cSelect로 설정했다.)
repositoryItemCheckEdit에서 NullStyle을 설정한 대로
체크박스 셀을 클릭해서 체크를 해도 다른 것을 클릭하면 클릭했었던 값이 NullStyle로 돌아간다.
(예시의 NullStyle은 Unchecked다.)
체크가 고정이 되지 않는다.
해결 방법은 해당 gridControl의 gridView에 이벤트를 추가하면 된다.
gridControl의 level designer에서 gridView를 클릭하거나
속성에서 gridView을 선택한 다음 CustomUnboundColumnData 이벤트를 더블 클릭하여 추가한다.
그 다음 아래와 같이 코딩한다.
// 전역변수로 onSelect 선언 List<bool> onSelect = new List<bool>(); ... { ... // gridControl에 데이터를 넣기 전 onSelect에 row count만큼 초기값 넣기 for (int i = 0; i < list.Count; i++) { onSelect.Add(false); } ... gridControlDataSource = list; } // CustomUnboundColumnData 이벤트 설정 private void gridView_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) { if (e.Column.FieldName == "cSelect") { if (e.IsGetData) e.Value = onSelect[e.ListSourceRowIndex]; if (e.IsSetData) onSelect[e.ListSourceRowIndex] = (bool)e.Value; } }
빌드 후 확인 해보면
체크한 것이 그대로 고정 된다.
반응형'닷넷 > WinForms' 카테고리의 다른 글
C# WinForms DevExpress SearchLookupEdit에서 그리드 뷰 설정하기 (0) 2021.11.11 C# ChromiumWebBrowser에서 JavaScript 함수 호출과 웹에서 C# 메소드 호출하는 방법 (2) 2021.08.03 C# WinForms DevExpress GridControl에서 셀 편집(SetRowCellValue)이 되지 않을 때, 체크가 안 될 때 등 (0) 2021.06.14 C# 폼에서 제목표시줄을 클릭했을 때 클릭이벤트가 발생되게 하는 방법 (0) 2021.05.13 C# 윈폼에서 배경 불투명도 조절하기 WinForms Opacity (0) 2020.09.30