[ Grid 튜닝5 - refreshBody ]
1. Grid Dynamic 생성 시 튜닝
. 이슈
- 보통 Grid Header, Body, Cell등을 dynamic하게 생성할 때 시간이 아주 많이 소비된다.
이유가 appendContentsCol() 등의 API 를 사용하게 되면 이때마다 grid를 다시 그리기 때문에
만약, cell을 20개 생성한다면 grid를 20번 새로 그린다는 의미가 될 수 있다.
. 해결방법
- Grid.set_enableredraw(false);
- grid dynamic하게 생성
- Grid.set_enableredraw(true);
. 이유
- set_enableredraw(false); 를 하게 되면 이때 부터 그리드를 그리지 않는다.
그런 후 grid의 모든 cell, expr등을 입힌 후
다시 set_enableredraw(true);를 해주면 Grid를 한번만 그리게 된다.
2. Dataset변경 시 Grid튜팅
. 이슈
- 화면에 상당히 많은 자료가 변경이 되고, expr등이 많이 변경되어야 되는 경우
grid에 표현이 되어야 되는 이때 속도가 상당히 느려진다.
. 해결방법1
- Grid.set_enableredraw(false);
- data 변경 및 expr변경
- Grid.set_enableredraw(true);
. 이유
- set_enableredraw(false); 를 하게 되면 이때 부터 그리드를 그리지 않는다.
그런 후 dataset에 모든 자료가 변경 된고, expr등을 변경한 후
다시 set_enableredraw(true);를 해주면 Grid를 한번만 그리게 된다.
. 해결방법2
- Grid.refreshBody(false);
- data 변경 및 expr변경
- Grid.refreshBody(true);
. 이유
- refreshBody() API가 set_enableredraw()보다 속도가 빠르다.
- set_enableredraw()는 grid를 처음부터 전체를 다시 그린다.
- refreshBody()는 변경된(?)부분만 다시 그린다.
- 참고 : refreshBody()는 변경된(?) 부분만 그리기 때문에 dynamic 하게 grid를 생성할 때는 사용하면 안된다.
반드시 dataset 의 oncolumn changed event에서만 가능하다.
3. refreshBody() API 의 prototype
- nexacro14lib > component > Grid > Grid.js
'Nexacro-이론 및 튜닝 > dataset.grid.튜닝' 카테고리의 다른 글
Dataset 튜닝4 - alasql (0) | 2017.11.15 |
---|---|
Dataset 튜닝3 - set,get (1) | 2017.11.15 |
Dataset 튜닝2 - Hashmap방식 (0) | 2017.11.15 |
Dataset 튜닝1 - 정의 (0) | 2017.11.15 |