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

Cell 세로 merge 문의 > Q&A | 토론

본문 바로가기

Wijmo

Q&A | 토론

ReactJS Cell 세로 merge 문의

페이지 정보

작성자 jaylee 작성일 2024-04-29 13:06 조회 53회 댓글 0건
제품 버전 : 5.20241.9
컨트롤 이름 : wijmo

본문

안녕하세요.


cell merge 관련 문의입니다.

아래 그리드를 보면 3번째 row까지 3개의 단일 row들이  

merge되어 총 3개의 row로 보입니다.


그 이후 row들은 cell 데이터값이 동일해서인지 9개의 row가 머지가됩니다.


데이터값과 상관없이 row 3개 기준으로 머지가 되었으면 합니다. 

예제소스가 있으면 공유 부탁드립니다..





현재 사용중인 CustomMergeManager

class CustomMergeManager extends MergeManager {
getMergedRange = (panel: GridPanel, row: number, col: number, clip = true): any => {
if (panel.cellType === CellType.ColumnFooter) {
const rg = new CellRange(row, col)
if ([0, 1, 2, 3, 4, 5].includes(rg.col)) {
rg.col = 0
rg.col2 = 5
}

if ([1, 2].includes(rg.row) && [6, 7, 8].includes(rg.col)) {
rg.col = 6
rg.col2 = 8
}
return rg
}

if (panel.cellType === CellType.ColumnHeader) {
const rng = new CellRange(row, col)
// expand left/right
for (let i = rng.col; i < panel.columns.length - 1; i++) {
if (
panel.getCellData(rng.row, i, true) !== panel.getCellData(rng.row, i + 1, true)
) {
break
}

rng.col2 = i + 1
}

for (let i = rng.col; i > 0; i--) {
if (
panel.getCellData(rng.row, i, true) !== panel.getCellData(rng.row, i - 1, true)
) {
break
}

rng.col = i - 1
}

// expand up/down
for (let i = rng.row; i < panel.rows.length - 1; i++) {
if (
panel.getCellData(i, rng.col, true) !== panel.getCellData(i + 1, rng.col, true)
) {
break
}

rng.row2 = i + 1
}

for (let i = rng.row; i > 0; i--) {
if (
panel.getCellData(i, rng.col, true) !== panel.getCellData(i - 1, rng.col, true)
) {
break
}

rng.row = i - 1
}

return rng
}

if (panel.cellType === CellType.TopLeft) {
// top-left cells, merge ranges
return new CellRange(0, 0, panel.rows.length - 1, panel.columns.length - 1)
}

if (panel.cellType === CellType.RowHeader) {
const rng = this.getMergedRange(panel.grid.cells, row, 1, clip) as CellRange
const eaderCellRange = new CellRange(row, col)

if (rng != null) {
eaderCellRange.row = rng.row
eaderCellRange.row2 = rng.row2
}

return eaderCellRange
}

// 셀 영역
if ([0, 1, 2, 3].includes(col) && panel.cellType === CellType.Cell) {
if (clip === void 0) {
clip = true
}

let rng: CellRange | null = new CellRange(row, col)
const val = panel.getCellData(row, col, false)
const pval = panel.getCellData(row, 1, false)

// 위로 병합할 경우
while (
rng.row > 0 &&
panel.getCellData(rng.row - 1, col, false) === val &&
panel.getCellData(rng.row - 1, 1, false) === pval
) {
rng.row--
}

// 아래로 병합할 경우
while (
rng.row2 < panel.rows.length - 1 &&
panel.getCellData(rng.row2 + 1, col, false) === val &&
panel.getCellData(rng.row2 + 1, 1, false) === pval
) {
rng.row2++
}

// 단일 셀인 경우
if (rng.isSingleCell) {
rng = null
}

return rng
}
}
}


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

댓글목록

등록된 댓글이 없습니다.

1 답변

ReactJS Re: Cell 세로 merge 문의

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

페이지 정보

작성자 MESCIUS루시 작성일 2024-05-02 10:17 댓글 0건

본문

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


문의하신 내용은 사용자 정의 mergeManger를 이용하여 셀을 3행 그룹씩 병합할 수 있습니다. 자세한 코드는 아래 샘플에서 확인할 수 있습니다. 


더불어 샘플을 바탕으로 고객님의 FlexGrid의 데이터 구조에 따라 CustomMergeManger 클래스의  getMergeRange 메서드를 수정하여 사용하시기 바랍니다. 

getMergeRange는 셀의 병합된 범위를 지정하는 CellRange를 가져오는 메서드입니다.


다른 궁금한 점이 생기면 문의주시기 바랍니다.


감사합니다.

메시어스 드림

댓글목록

등록된 댓글이 없습니다.

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