! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

Flexgrid column의 datatype이 boolean일때 전체 체크 및 전체 체크 해제 기능 문의 > Q&A | 토론

본문 바로가기

ComponentOne

Q&A | 토론 - WPF

WPF Flexgrid column의 datatype이 boolean일때 전체 체크 및 전체 체크 해제 기능 문의

페이지 정보

작성자 chany 작성일 2022-07-26 09:41 조회 2,052회 댓글 4건
제품 버전 : 4.5.2
컨트롤 이름 : c1flexgrid

본문

Flexgrid column의 datatype이 boolean일때 발생하는 체크박스 전체 체크 및 전체 체크 해제 기능 문의드립니다.


아래 Column Header Menu라는 컬럼 특징이 있습니다. 이에 대한 예시 샘플을 요청드리려 합니다.


Column Header Menu | FlexGrid for WPF | ComponentOne (grapecity.com) 


컬럼은 xmal에서 추가하지 않고 xaml.cs에서 Columns.Add()를 사용하여 추가한 상태입니다.

필터기능은 사용하지 않았습니다. 사용하지 않는 이유는 sorting을 unable 상태로 유지해야하기 때문입니다.


만약 위에 제시된 flexgrid 특징을 사용하지 못하면 checkbox를 추가하여 event로 강제 처리 혹은 model의 OnPropertyChanged 사용을 생각 중입니다.

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

chany님의 댓글

chany 작성일

CheckBox Checked and Un-Checked Events in Data Grid Header (c-sharpcorner.com)

해당 건은 flexgrid가 아닌 datagrid로, DataGridTemplateColumn.Header에 checkbox 추가하여 이벤트로 진행하는 코드입니다. flexgrid도 가능한지 문의드립니다. 

GCK폴님의 댓글의 댓글

GCK폴 작성일

안녕하세요 그레이프시티 입니다.

좀더 정확한 답변을 드리기 위해 몇가지 확인을 드리려 합니다.

아래 Column Header Menu라는 컬럼 특징이 있습니다.
-> 이것이 어떤 의미 이실까요? 단순히 저희 C1에 Column Header Menu라는 기능이 있다는 말씀을 하시는 것일까요?

그리고 원하시는 것은 Boolean 값에도 이러한 기능을 사용하고 싶다는 것일까요?
대신 필터 기능은 사용하지 않을 것이고 sorting도 사용하지 않을 것이라는 말씀이신가요?

이것이 불가능 하다면 단순히 헤더에 체크박스를 배치하여 해당 체크박스를 클릭하였을때 
전체 체크 또는 해제를 하는 기능을 알아봐 드리면 될까요?

그리고 하단에 "단어장에 추가" "복사" 그리고  "TRANSLATE with x" 항목등은 무슨 의미이신가요? 

추가적인 설명을 부탁 드립니다.

감사합니다.
그레이프시티 드림

chany님의 댓글의 댓글

chany 작성일

네, 링크를 보시면 C1FlexGrid에 Column Header Menu 특징 중 checkbox를 다루는 것이 있다고 나와있고 해당 기능을 사용하려면 어찌해야하는지 문의 중이었습니다.
대신 필터 기능, sorting은 사용하지 않을 예정입니다.

헤더에 체크박스 배치 알아봐주시면 감사드리겠습니다. 단, xaml에서 조작이 아닌 class에서 조작이 가능하도록 했으면 좋겠습니다.

하단에는 왜 저게 계속 들어가는지 모르겠네요 수정을 해서 지우고 해도 자동입력이 됩니다. 사용하고 있는 웹 브라우저는 MS Edge입니다.
아마 브라우저 내 확장프로그램으로 번역프로그램이 내장되어있으면 에디터에서 인식하고 발생하는 현상으로 추측됩니다. 해당 확장프로그램 삭제 후 본문 수정했습니다.

chany님의 댓글의 댓글

chany 작성일

추가문의드립니다. checkbox column 클릭 또는 celleditchange에 대한 이벤트를 주고 싶습니다. 

flexgrid click 이벤트를 주었을때 특정컬럼에 대한 제약을 줄 수 있는지 또한 찾아보고 있습니다.
column에 대한 이벤트가 없어 아래와 같이 작성해보았습니다. 
이렇게 했을 경우 체크박스 클릭하고 cell을 나갈때 적용이되는 현상이 나타나며 한 셀에서 체크, 체크해제를 반복할 경우에 이벤트별 적용되지 않습니다. 

private void _flexGroup_BeginningEdit(object sender, CellEditEventArgs e)
        {
            _flexGroup_CellEditEnding(sender, e);
        }

        private void _flexGroup_CellEditEnding(object sender, CellEditEventArgs e)
        {         
            if (e.Column.Equals(_flexGroup.Columns["IsChecked"].Index))
            {
                var docNo = _flexGroup[_flexGroup.Selection.Row, "DocumentNo"];
                var revNo = _flexGroup[_flexGroup.Selection.Row, "Revision"];
                var _isChecked = (bool)_flexGroup[_flexGroup.Selection.Row, "IsChecked"];
                var changeCheck = bom.AllChildren.ToList().Where(c => c.DocumentNo.Equals(docNo) && c.Revision.Equals(revNo)).ToList();
                changeCheck.ForEach(c => c.IsChecked = _isChecked);
            }
        }

1 답변

WPF Re: Flexgrid column의 datatype이 boolean일때 전체 체크 및 전체 체크 해제 기능 문의

추천0 이 글을 추천하셨습니다 비추천0 채택채택

페이지 정보

작성자 GCK폴 작성일 2022-07-27 18:47 댓글 1건

본문

첨부파일

안녕하세요 그레이프시티입니다.


아래와 같이 하시면 될것 같습니다.

 public class UserCellFactory : CellFactory
    {
        private C1FlexGrid _grid;
        public override void CreateColumnHeaderContent(C1FlexGrid grid, Border bdr, CellRange rng)
        {
            base.CreateColumnHeaderContent(grid, bdr, rng);
            _grid = grid;
            if (rng.Column == 2)
            {
                var checkBox  = new CheckBox();
                checkBox.Content = "Select All";
                checkBox.Click += CheckBox_Click;
                bdr.Child = checkBox;
                grid.Columns[rng.Column].Width = new System.Windows.GridLength(100);
                grid.Columns[rng.Column].HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
            }
        }
        private void CheckBox_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            foreach(var item in _grid.ItemsSource)
            {
                ((DataItem)item).Check = (sender as CheckBox).IsChecked;
            }
        }
    }
CellFactory의 CreateColumnHeaderContent 메서드를 재정의하여 열 헤더에 체크박스 만들고 그에 따라 클릭 이벤트를 처리할 수 있습니다. 
간단한 샘플 첨부드리니 참고해 주시기 바랍니다.

추가로 궁금하신 사항이 있다면 다시 말씀해 주시기 바랍니다. 

감사합니다,

그레이프시티 드림 

댓글목록

chany님의 댓글

chany 작성일

확인해보도록 하겠습니다. 답변 감사합니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.