본문 바로가기

Development/.NET6

커스텀 체크박스 열 추가 (수정) GridView의 기본 선택 기능을 사용해 보았지만, 원하는 동작이 나오지 않아 기존 선택 로직을 수정하게 되었습니다. 1. 기존 선택 방식과 문제점 기존 구현에서는Ctrl + 마우스 좌클릭 → 선택 행이 추가일반 좌클릭 → 이전 선택 상태 초기화때문에 선택 상태를 유지하려면, 이전 선택 내용을 매번 저장하고, 클릭 후 다시 복원해야 하는 불편함이 있었습니다. 아래는 선택 기능을 체크박스 열 기반으로 변경하여,마우스 좌클릭 한 번만으로 선택 추가와 Shift 키를 이용한 다중 선택 이 가능하도록 구현했습니다. 2. 체크박스 열 기반 선택 로직 CustomDrawCell 이벤트→ 체크박스가 선택되면 배경색 변경→ 시각적으로 선택 상태를 표시대규모 선택 변경 → unbound 열의 상태를 _ch.. 2024. 12. 4.
VisibleIndex와 실제 컬럼 구조의 차이 (UI 구조와 데이터 구조) GridView에서 컬럼에 접근하는 방법에 따라 순회 순서가 달라집니다. 아래는 예시 코드입니다.GridColumn column1 = new GridColumn { FieldName = "A", VisibleIndex = 2 };GridColumn column2 = new GridColumn { FieldName = "B", VisibleIndex = 0 };GridColumn column3 = new GridColumn { FieldName = "C", VisibleIndex = 1 };GridColumn column4 = new GridColumn { FieldName = "D", VisibleIndex = 3 };gridView1.Columns.AddRange(new[] { column1, colu.. 2024. 11. 28.
커스텀 체크박스 열 추가 (제네릭 타입) 지난 포스팅에서 그냥 체크박스 열을 추가해버리면 된다 라는 식의 해결책을 언급했었는데, 실제로 간단히 구현해 보았습니다.(실제 행 선택 로직은 추후 업데이트 예정)관련글 : https://waydd.tistory.com/3 1. 제네릭 bool 처리 데이터베이스에서 GridView로 데이터를 바인딩할 때는 bool 타입이 없는 경우가 많습니다.그래서 아래 코에서는 true/false 값을 제네릭으로 처리할 수 있도록 구성했습니다.또한, GridViewColumnHelper를 사용하면 체크박스뿐 아니라 다른 RepositoryItem도 간단히 생성할 수 있습니다. 2. CustomUnboundColumnData 이벤트 체크박스 열을 UnboundColumn 으로 구성하면 데이터 표시 및 변경 시점에.. 2024. 11. 28.
SelectionChanged 이벤트와 CollectionChangeAction.Refresh의 필요성 SelectionChanged 와 CollectionChangeAction.Refresh ) SelectionChanged 이벤트에서는 이벤트 객체의 Action 속성을 통해 현재 선택 상태의 변경 유형을 확인할 수 있습니다.Add : 선택 항목을 컬렉션에 추가Remove : 선택 항목을 컬렉션에서 제거Refresh : 전체 선택 상태를 새로 고침여기서 Refresh는 다른 값들과 성격이 다소 다릅니다.그렇다면 왜 Refresh가 필요하게 되었는지 먼저 살펴보겠습니다: 1. CollectionChangeAction.Refresh가 필요한 이유 Action 값이 CollectionChangeAction.Refresh 일 때는 다음과 같은 상황입니다.데이터 소스 변경 ex) 행 추가/삭제, 필터링, .. 2024. 11. 21.
이벤트를 구독해서 값 변경을 감지하기 (C#) 사용자가 UI 컨텍스트를 통해 데이터 작업을 수행할 때, 각 행위를 EditModeType으로 정의하고 해당 변수의 값 변경을 감지하여 처리할 수 있습니다. 이를 구현하는 것이 EditModeTypeNotifier 클래스 입니다.UI 혹은 비즈니스 로직이 즉시 반응할 수 있도록 돕는 도우미 클래스이자,EditModeType 값의 변경을 추적하고값 변경 시 외부에서 이벤트를 통해 반응할 수 있도록 도와줍니다. 또한, EditModeChangedEventArgs 이벤트 객체를 활용하면,이전 값과 새로운 값에 모두 접근할 수 있어 값 변경에 따른 세부적인 처리 로직을 구현할 수 있습니다. 코드 구현 )public enum EditModeType { Insert, Update, .. 2024. 11. 20.
DevExpress DetailBand의 FillEmptySpace 속성 이해와 활용 FillEmptySpace 속성이란 ) DetailBand의 속성 중 FillEmptySpace는 Detail 밴드가 차지하지 않은 빈 공간을 채울지 여부를 설정하는 옵션입니다. 기본값은 false이며, true로 설정하면 Detail 밴드 아래의 빈 영역을 다음 밴드나 페이지 끝까지 채우는 동작을 수행합니다. 다만, ReportFooter나 PageFooter와 같은 다른 밴드와 함께 사용할 경우,의도한 대로 빈 공간이 채워지지 않는 상황 이 종종 발생할 수 있습니다. 아래 이미지는 그 예시를 보여줍니다. 왜 이런 결과가 나타날까? FillEmptySpace 속성은 모든 데이터가 Detail 밴드에 출력된 후 페이지에 남은 빈 공간을 계산해 행으로 채워주는 기능입니다.즉, 모든 데이터와 페이지 .. 2024. 11. 12.