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

그리드 병합 관련 > Q&A | 토론

본문 바로가기

ReactJS 그리드 병합 관련

페이지 정보

작성자 MESCIUSMAN 작성일 2023-12-08 12:47 조회 125회 댓글 0건
제품 버전 : "@grapecity/wijmo.react.all": "^5.20221.857",
컨트롤 이름 : wijmo grid merging select

본문

안녕하세요


튜토리얼 중 셀 병합하는 부분이 있는데 리액트 클래스형 컴포넌트로 되어있어는데

펑션형 컴포넌트 소스로 부탁드려도 될까요?



위 사진 좌측에 1.....19 번호에 병합된 select를 넣고 싶습니다.

병합된 셀렉트를 클릭 시 sap item number 행 값을 변수에 모두 담고 싶습니다.

그리고 row클릭 시 병합된 셀 row 만큼 백그라운드 색을 변경해주고 싶습니다.


소스로 부탁드리겠습니다


감사합니다~

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

댓글목록

등록된 댓글이 없습니다.

2 답변

ReactJS Re: 그리드 병합 관련

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

페이지 정보

작성자 MESCIUS루시 작성일 2023-12-11 11:02 댓글 0건

본문

안녕하세요 메시어스입니다.


문의하신 내용 중 병합된 셀 클릭시 배경색 변경 처리와, rowHeader 클릭 시 값을 가져오는 기능의 경우, 현재 확인 중에 있으면 업데이트가 되는대로 안내드리도록 하겠습니다.


다만 class형 컴포넌트 데모를 functional 컴포넌트로 단순하게 변환처리하는 문의의 경우 Wijmo 기능이라기 보다는 일반적인 React 사용 방법에 대한 문의로 확인됩니다. 이전에 안내드린 것과 같이 Wijmo Q&A 게시판은 Wijmo를 통해 개발을 하시는 중에 생기는 문의사항에 대해 처리하는 게시판입니다. 


따라서 이전에 Functional 컴포넌트로 드렸던 샘플을 참고하셔서 변환 작업을 하시길 바라며 진행하시는 중에 Wijmo와 관련되어 문제가 발생하는 경우에 저희 쪽으로 문의주시면 확인 후, 도움을 드릴 수 있도록 하겠습니다.


감사합니다.

메시어스 드림


댓글목록

등록된 댓글이 없습니다.

ReactJS Re: 그리드 병합 관련

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

페이지 정보

작성자 MESCIUS루시 작성일 2023-12-12 15:13 댓글 1건

본문

안녕하세요 메시어스입니다.


문의하신 내용에 대해 답변드립니다.


1. 병합된 셀 클릭시 해당 행의 배경색 변경 처리하는 방법 

=> 해당 기능을 구현하기 위해서는 selectionChanged 이벤트를 사용하여 현재 항목의 병합 범위에 있는 모든 행에 선택사항을 업데이트 처리해주시면 됩니다. 아래 소스 코드를 참고하여 주시기 바랍니다.


function initialized(s) {
    //select any cell to trigger 'selectionChanged' initially
    setTimeout(() => {
      s.select(new wjGrid.CellRange(1, 0));
    });
  }

  function selectionChangedHandler(s, e) {
    var mergedRange = s.getMergedRange(s.cells, e.row, 0);
    var mainRow = getFirstRow(e.row, mergedRange.rowSpan);
    var rng = new wjGrid.CellRange(
      mainRow,
      0,
      mainRow + mergedRange.rowSpan - 1,
      s.columns.length
    );
    if (rng.equals(s.selection)) {
      return;
    }
    s.select(rng);
  }

  function getFirstRow(row, range) {
    return row - (row % range);
  }

(...)
  <wjcGrid.FlexGrid
          allowMerging="All"
          itemsSource={source}
          selectionChanged={selectionChangedHandler}
          initialized={initialized}
          mergeManager={new RestrictedMergeManager()} // 병합 처리
          allowSorting={false}
        >


다만 해당 기능을 적용할 경우, 편집과 같은 FlexGrid의 일부 기능이 제거됩니다. 이는 편집할 셀을 클릭할 때마다 selectionChanged 핸들러가 실행되고 그리드가 편집 모드로 전환되지 않도록 새로운 셀을 다시 선택하기 때문입니다. 해당 내용에 대해 업무에 참고 부탁 드립니다.


2. rowHeader 클릭 시 병합된 셀의 행만큼의 특정 열의 값을 가져오는 기능

=> 해당 기능의 경우, FlexGrid hostElement에 click 이벤트를 추가한 뒤, row header 클릭 시 getMergedRange 메서드를 통해 병합된 셀 영역의 정보를 가져온 뒤, 반복문을 통해 값을 가져오시기 바랍니다. 아래 간단한 코드를 참고하여 주시기 바랍니다.


  function initialized(s) {
    s.hostElement.addEventListener("click", function (e) {
      var ht = s.hitTest(e);
      if (ht.cellType === 3) {
	//column의 인덱스는 merged 셀이 있는 곳으로 설정
        var mergedCell = s.getMergedRange(s.cells, ht.row, ht.col); 
        var testArr = [];
        for (var i = mergedCell.topRow; i <= mergedCell.bottomRow; i++) {
          testArr.push(s.rows[i].dataItem.product);
        }
        console.log(testArr);
      }
    });
  }

(...)
<wjcGrid.FlexGrid
    allowMerging="All"
    itemsSource={source}
    initialized={initialized}
    mergeManager={new RestrictedMergeManager()}
    allowSorting={false}
>

- getMergedRange API 문서

- topRow API 문서

- bottomRow API 문서


관련 API 문서를 공유드리며 다른 궁금한 점이 생기면 문의주시기 바랍니다.


감사합니다.

메시어스 드림

댓글목록

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