All Day Tired

그리드 setRealRowSize로 subrow 높이 변경 시 전체 row에 적용 본문

Front/넥사크로

그리드 setRealRowSize로 subrow 높이 변경 시 전체 row에 적용

yu.dev 2024. 8. 28. 13:00

진짜 너무너무너무너무너무 빡쳐서 남김...

 

col0              col1

row0  
row1  
row2
row3

('그리드 원본'이라 칭함)

 

그리드를 만들 때 그리드 형태는 저런식으로 밑에 2줄만 병합하고 row0의 row size는 0으로 안보이게 처리함

즉, 아래와 같은 그리드 형태가 됨(row0은 row size가 0이라서 안보이게 됨)

col0              col1

row1  
row2
row3

('그리드 수정'이라 칭함)

 

시나리오

사용자가 input(edit사용)에 질문을 입력하고 [검색] 버튼을 누르면

사용자가 입력한 질문이 (col1, row0)에 써지면서 row0의 높이를 늘린다.

그리고 나머지 subrow(row1, row2, row3)들의 높이를 0으로 처리해서 안보이게 처리  (여기까지가 '정리' 내용의 2에 해당)

검색한 결과의 list들은  subrow(row1, row2, row3)들의 높이를 다시 늘리고 row0의 높이는 다시 0으로 처리해서  '그리드 수정' 형태로 쭉 list들이 표시되도록 할 것 (여기까지가 '정리' 내용의 3에 해당)

예를 들어 결과 list가 게시판 list라고 한다면

(col0, row1)에는 체크박스를 넣고 (col1, row1)에는 제목, (col0, row2)에는 게시글 요약내용, (col0, row3)에는 내용

이런 식으로 1세트로 list가 쭉 보여지도록 할 것

 

이렇게 row size를 스크립트로 계속 조정하기 위해서 사용하는 것이

setRealRowSize -> 특정row에 높이 변경 O, 특정row의 subrow 높이 변경 O

 

근데 이걸 사용하는데 자꾸 마지막으로 적용한 setRealRowSize가 전체 row에 적용됨

별 짓을 다해도 안됨...

 

해결법은 grid에 extendsizetype을 row로 변경해야함....

 

정리하면서 위 상황 로직까지 써보면

1. gird에 extendsizetype을 row로 변경

2. 입력받고 버튼 이벤트 function에(= 질문 입력하고 [검색] 버튼 이벤트 function에)

this.grid.setRealRowSize(0, 10, 0);//setRealRowSize(row인덱스, 높이, subrow인덱스)
this.grid.setRealRowSize(0, 0, 1);
this.grid.setRealRowSize(0, 0, 2);
this.grid.setRealRowSize(0, 0, 3);

3. 결과 받아오는 function에

this.grid.set_enableredraw(false);//그리드 그리는걸 자동으로 그리지 마라
for(var i = 0; i < this.dsDataset.getRowCount(); i++){//dsDataset은 grid에 바인딩된 dataset
	//필요한 로직 있으면 처리
    
    this.grid.setRealRowSize(i, 0, 0);
    this.grid.setRealRowSize(i, 10, 1);
    this.grid.setRealRowSize(i, 10, 2);
    this.grid.setRealRowSize(i, 10, 3);
}
this.grid.set_enableredraw(true);//그리드 그리는걸 자동으로 그려라

 

이런식으로 처리하면 된다.

Comments